|
[ de_c0der @ 05.01.2007. 15:27 ] @
| Hmmm.. uvijek sam htio reversovat win32 api fje i pritom ih istrazivat i doc do eventualnog propusta, BO il nesto deseto...
Al recimo ExitProcess, MessageBox i sl. kada udjem u njih preko ollya tamo ima gromade koda.... ne mogu se opce snac, sad uleti u jedan dll, sad u drugi, sad u treci... sto tisuca CALL poziva i jmpova koji ne vode nikamo.... kako je zaeban taj api i sva ta sranja koja su "ispod programa", a da ne spominjem HAL i pisanje drajvera :D
Uglavnom dobro bi mi dosla koja uputa, a posebno link ka literaturi... informacije o reversingu apija, primjer takvog reversinga.. i sl..
pozz |
[ EArthquake @ 05.01.2007. 19:38 ] @
ne znam sta da ti kazem a da te ne razocaram :)
salu nastranu
pa nikako nije lako , prosto ne moze da bude,
za win nisam radio nista slicno , ali da te uputim cisto , uzmi IDA Pro , najkewl stvarcica , pogledaj www.openrce.org ima tamo kewl teksttova i svasta
neke uopsteno knjige o RE , ima ona nesto Disassembling using IDA Pro asn SoftICE ... ta je kewl
POZ
Aca
[ de_c0der @ 05.01.2007. 21:34 ] @
Koristim vec dosta IDA 5 pro... al ne pomaze puno, citam trenutno onu "secrets of reversing eng.".. nije losa knjiga
Al strasni su ti apiji i sve te fje unutra, ma nemam rijeci, uzmi debugger i prodji po tom kodu... sick of det bulshits!!
I jos mi nesto ne ide u glavu, recimo kad u C-u napises MessageBox(), kompajler lijepi na tvoj program kod iz .lib fajlova, mada ne kontam zasto su opce potrebni .lib fajlovi kada je bitno da na mjestu gdje pokazuje import table data direktorij, tj. import table pokazuje na IMAGE_IMPORT_DESCRIPTOR strukturu a ona ima Name koji sadrzi adresu na ime DLL-a i ima OriginalFirstChunk koji pokazuje na prvi hint (2 bajta) od prve fje u tom dll-u, znaci ako program koristi 2 DLL-a, bit ce 2xIMAGE_IMPORT_DESCRIPTOR strukture +1xIMAGE_IMPORT_DESCRIPTOR koja je ispunjena nulama.. ok, i zasto sad kompajler ne upisi te podatke u taj dio i onda windows loader kad ucitava program ne popuni IAT vec su potrebni .lib fajlovi???
I jos nesto, zasto glupi kompajleri stavljaju svoj nepotrebni kod u program i tako samo zaseru cijeli kod i sam reversing.. zivio asm :) jer ono sto nakucas to i imas, a ne ovako..
z
[ McKracken @ 06.01.2007. 00:30 ] @
Citat: I jos nesto, zasto glupi kompajleri stavljaju svoj nepotrebni kod u program i tako samo zaseru cijeli kod i sam reversing.. zivio asm :) jer ono sto nakucas to i imas, a ne ovako..
Promasio si temu do koske jer si sve pogresno shvatio. Bolje uzmi citaj malo o arhitekturi OS-eva pa ce ti biti jasnije :)
[ glupi @ 06.01.2007. 16:39 ] @
Microsoft Windows Internals, Reverse engeneering sectrets, http://www.uninformed.org/?v=1 + IDA
Nebi bilo lose da se malo spraksiras u reversanju i da proucis os na kojem reversas jer inace neces daleko dogurat...
Ako reversas neki api, nije na odmet znat cemu sluzi, lakse shvatis logiku koja stoji iza koda.
Po ovome sto si napisao sumnjam da ces daleko dogurat u trazenju propusta u api-jima, probaj prvo malo skuzit te propuste i sta se krije iza njih, onda uzmes idu, skines si loopdetection pluginove, dokumentaciju za pisanje ida pluginova i onda one stvari koje si skuzio da predstavljaju problem (movs*, rep*, add*, mul*,..., strcpy, strcat, memcpy...) dodas u jedan ida plugin koji ti javi i highlighta navedene potencijalne probleme...
Citat: I jos nesto, zasto glupi kompajleri stavljaju svoj nepotrebni kod u program i tako samo zaseru cijeli kod i sam reversing.. zivio asm :) jer ono sto nakucas to i imas, a ne ovako..
LOL, no comment
[ de_c0der @ 06.01.2007. 19:11 ] @
E pa uopce nije LOL, skini DEV-C++ i napravi u njemu program koji se sadrzavat samo MessageBox, i kompajliraj to i prouci iz debuggera pa ces vidjet da nije lol, a onda napravi to u assembleru, kompajliraj i otvori taj program sa debuggerom i vidjet ces o cem ti pricam :)
I otvori ta 2 programa u nekom hex vieweru tipa HIEW i pogledaj velicinu .data, .bss, .code sekcija, pogledaj i kolicinu importa pa ti nece bit lol :)
[ de_c0der @ 06.01.2007. 19:22 ] @
Evo da vidimo:
1.)source code od programa napisanog u C++ -u iskompajliranog u Dev-C++ -u (GCC)
Code:
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
MessageBox(0,"J*bem vas mutave!","Naslov",0);
}
Da vidimo to iz ollya (obratite pozornost na scrollabar):
2.)source code od istog gornjeg programa napisanog u assembleru (MASM32):
Code:
.386
.model flat, stdcall
option casemap:none
includelib ..\lib\kernel32.lib
includelib ..\lib\user32.lib
ExitProcess PROTO uCode:DWORD
MessageBoxA PROTO p1:DWORD, p2:DWORD, p3:DWORD, p4:DWORD
.data
Naslov db "Naslov",0
Text db "J*bem vas mutave!",0
.code
start:
push 0
push offset Naslov
push offset Text
push 0
call MessageBoxA
push 0
call ExitProcess
end start
Da vidimo to iz ollya:
Znaci progami isto rade... a to je ono sto sam vas pitao u vezi dodavanja koda koji ubacuje linker i koji je bespotreban.. sad da cujem LOL :D ..
[ glupi @ 06.01.2007. 19:53 ] @
LOL...
nekuzim jel se ti zajebavas ili??? u c++ ne pises aplikacije od 10 ili 100 linija koda, napravi nesto od 10000+ linija koda u c++-u i isto to u asmu...
[ de_c0der @ 06.01.2007. 20:25 ] @
Mozda se malo zaebavam al opet.. poanta svega je (bez obzira sto iscakcem iz teme do kraja) sto su svi kompajleri jako lose dizajnirani i napravljeni.. recimo, napravi u delphiu obican program koji ce sadrzavat obican prozor (formu) preko VCL-a i dobit ces program od 300kb... :D
Dok to mozes dobit obicnim popunjavanjem WNDCLASSEX strukture i pozivanjem CreateWindowEx apija :P
I ne kontam zasto je potrebno ovo recimo:
Code:
ABORTPROC typedef DWORD
ACCESS_MASK typedef DWORD
ACMDRIVERENUMCB typedef DWORD
ACMDRIVERPROC typedef DWORD
ACMFILTERCHOOSEHOOKPROC typedef DWORD
ACMFILTERENUMCB typedef DWORD
ACMFILTERTAGENUMCB typedef DWORD
ACMFORMATCHOOSEHOOKPROC typedef DWORD
ACMFORMATENUMCB typedef DWORD
ACMFORMATTAGENUMCB typedef DWORD
NET_API_STATUS typedef DWORD
API_RET_TYPE typedef DWORD
APPLET_PROC typedef DWORD
BOOL typedef DWORD
CALINFO_ENUMPROC typedef DWORD
COLORREF typedef DWORD
;;; CONST typedef DWORD ; naming conflist with MASM reserve word
;;; CRITICAL_SECTION typedef DWORD ; naming conflist with structure
CTRYID typedef DWORD
DATEFMT_ENUMPROC typedef DWORD
DESKTOPENUMPROC typedef DWORD
DLGPROC typedef DWORD
DRAWSTATEPROC typedef DWORD
EDITWORDBREAKPROC typedef DWORD
ENHMFENUMPROC typedef DWORD
ENUMRESLANGPROC typedef DWORD
ENUMRESNAMEPROC typedef DWORD
ENUMRESTYPEPROC typedef DWORD
FARPROC typedef DWORD
FILE_SEGMENT_ELEMENT typedef DWORD
FONTENUMPROC typedef DWORD
GOBJENUMPROC typedef DWORD
GRAYSTRINGPROC typedef DWORD
HACCEL typedef DWORD
HANDLE typedef DWORD
HBITMAP typedef DWORD
HBRUSH typedef DWORD
HCOLORSPACE typedef DWORD
HCONV typedef DWORD
HCONVLIST typedef DWORD
HCURSOR typedef DWORD
HDC typedef DWORD
HDDEDATA typedef DWORD
HDESK typedef DWORD
HDROP typedef DWORD
HDWP typedef DWORD
HENHMETAFILE typedef DWORD
HFILE typedef DWORD
HFONT typedef DWORD
HGDIOBJ typedef DWORD
HGLOBAL typedef DWORD
HHOOK typedef DWORD
HICON typedef DWORD
HIMAGELIST typedef DWORD
HIMC typedef DWORD
HINSTANCE typedef DWORD
HKEY typedef DWORD
HKL typedef DWORD
HLOCAL typedef DWORD
HMENU typedef DWORD
HMETAFILE typedef DWORD
HMODULE typedef DWORD
HMONITOR typedef DWORD
HOOKPROC typedef DWORD
HPALETTE typedef DWORD
HPEN typedef DWORD
HRGN typedef DWORD
HRSRC typedef DWORD
HSZ typedef DWORD
HTREEITEM typedef DWORD
HWINSTA typedef DWORD
HWND typedef DWORD
;;; INT typedef DWORD; naming conflist with MASM reserve word
IPADDR typedef DWORD
LANGID typedef DWORD
LCID typedef DWORD
LCSCSTYPE typedef DWORD
LCSGAMUTMATCH typedef DWORD
LCTYPE typedef DWORD
LINEDDAPROC typedef DWORD
LOCALE_ENUMPROC typedef DWORD
LONG typedef DWORD
LPARAM typedef DWORD
LPBOOL typedef DWORD
LPBYTE typedef DWORD
LPCCHOOKPROC typedef DWORD
LPCFHOOKPROC typedef DWORD
LPCOLORREF typedef DWORD
LPCRITICAL_SECTION typedef DWORD
LPCSTR typedef DWORD
LPCTSTR typedef DWORD
LPCVOID typedef DWORD
LPCWSTR typedef DWORD
LPDWORD typedef DWORD
LPFIBER_START_ROUTINE typedef DWORD
LPFRHOOKPROC typedef DWORD
LPHANDLE typedef DWORD
LPHANDLER_FUNCTION typedef DWORD
LPINT typedef DWORD
LPLONG typedef DWORD
LPOFNHOOKPROC typedef DWORD
LPOLESTR typedef DWORD
LPCOLESTR typedef DWORD
LPPAGEPAINTHOOK typedef DWORD
LPPAGESETUPHOOK typedef DWORD
LPPRINTHOOKPROC typedef DWORD
LPPROGRESS_ROUTINE typedef DWORD
LPSETUPHOOKPROC typedef DWORD
LPSTR typedef DWORD
LPSTREAM typedef DWORD
LPTHREAD_START_ROUTINE typedef DWORD
LPTSTR typedef DWORD
LPVOID typedef DWORD
LPWORD typedef DWORD
LPWSTR typedef DWORD
LRESULT typedef DWORD
;;; LUID typedef DWORD ; name conflict with structure
MCIDEVICEID typedef DWORD
PBOOL typedef DWORD
PBOOLEAN typedef DWORD
PBYTE typedef DWORD
PCHAR typedef DWORD
PCRITICAL_SECTION typedef DWORD
PCSTR typedef DWORD
PCTSTR typedef DWORD
PCWCH typedef DWORD
PCWSTR typedef DWORD
PDWORD typedef DWORD
PFLOAT typedef DWORD
PFNCALLBACK typedef DWORD
PHANDLE typedef DWORD
PHANDLER_ROUTINE typedef DWORD
PHKEY typedef DWORD
PINT typedef DWORD
PLCID typedef DWORD
PLONG typedef DWORD
PLUID typedef DWORD
PROPENUMPROC typedef DWORD
PROPENUMPROCEX typedef DWORD
PSHORT typedef DWORD
PSTR typedef DWORD
PTBYTE typedef DWORD
PTCHAR typedef DWORD
PTIMERAPCROUTINE typedef DWORD
PTSTR typedef DWORD
PUCHAR typedef DWORD
PUINT typedef DWORD
PULONG typedef DWORD
PUSHORT typedef DWORD
PVOID typedef DWORD
PWCHAR typedef DWORD
PWORD typedef DWORD
PWSTR typedef DWORD
REGISTERWORDENUMPROC typedef DWORD
REGSAM typedef DWORD
SC_HANDLE typedef DWORD
SC_LOCK typedef DWORD
SCODE typedef DWORD
SENDASYNCPROC typedef DWORD
SERVICE_STATUS_HANDLE typedef DWORD
SOCKET typedef DWORD
TIMEFMT_ENUMPROC typedef DWORD
TIMERPROC typedef DWORD
UINT typedef DWORD
ULONG typedef DWORD
WINSTAENUMPROC typedef DWORD
WNDENUMPROC typedef DWORD
WNDPROC typedef DWORD
WPARAM typedef DWORD
YIELDPROC typedef DWORD
...
...
ne zelim nastavit jer ima na tone dalje
E sad, koja je poanta uvodjenja 10000000000000 razlictih imena tipova kada se sve temelji na DWORD-u? kao da sam windows, njegovi apiji i native apiji i samo programiranje za njega nije dovoljno komplicirano pa se tako uvodi 100000000000 razlicitih tipova za koje po mome nema potrebe jer uopce ne olaksavaju programiranje vec samo zbunjuju...
A za ovaj reversing apija.. nista od toga, odgodio sam to za par godina a do tada cu detaljno razradit windows internalije i rad kompajlera, linkera, i svega ostalog ..
hvala na pomoci al nema druge nego se prihvatit posla... i steta sto je ovaj dio foruma mrtav.. i to isto necu nikad shvatit al .. nije vazno :)
poz
[ glupi @ 06.01.2007. 20:37 ] @
http://www.muppetlabs.com/~breadbox/software/tiny/
Citat: Mozda se malo zaebavam al opet.. poanta svega je (bez obzira sto iscakcem iz teme do kraja) sto su svi kompajleri jako lose dizajnirani i napravljeni..
sa kolicinom traljavog koda koji ekipa pise dobro i da mogu skompajlirat to... i nebi se slozio sa tobom, neki kompajleri ce bolje optimizirat kod od tebe :P s tim da vrijeme do gotovog programa u visem programskom jeziku od asm-a je neizmjerno krace, portabilnost... a da ne spominjem skriptne jezike kao python...
a ti kao znas kako su dizajnirani pa znas da je los dizajn....?
svi smo svjesni cinjenice da je program pisan u asmu manji, ali isto tako svi cijenimo ovo malo vremena sto smo na zivotu...
[ de_c0der @ 07.01.2007. 21:29 ] @
Citat: glupi
a ti kao znas kako su dizajnirani pa znas da je los dizajn....?
Da, Angelina Jolie mi je rekla kako su dizajnirani
[ de_c0der @ 09.01.2007. 19:56 ] @
LOL, sta ste sad svi zasutili?
Kao ne palite se na nju  ?
[ Mitrović Srđan @ 09.01.2007. 22:27 ] @
wuz?
lamer.
[ EArthquake @ 11.01.2007. 17:44 ] @
hehehehhe , bas me lepo zasmeeja :)))
to mislis na andjelinu iz hackers ?
:)) kako bese , acid bur ili sta vec :)))
hahah
neko bi ovde rebalo malo da cita cika knuth-a i slicne stvari
zamisli samo kako bi bilo dobro da kompajler moze savrseno da interpretira tvoj program koji mu napises u dve linije koda
pa to bi bilo super , ali bi kompajler morao da bude superpametan , ili ti morao bi da zna za sve moguce kombinacije koda da bi odabrao najbolju (nekako se sve vrti oko halting problema ovde:)) ti izvoli pa napravi takav kompajler , napravi samo savrsen parser , bice dovoljno :))) ali pazi, nemoj da vidimo ui njemu gomilu if-ova :)))
jos jedna stvar, gcc recimo ima neke optimizacije odredjene , bez optimizacija kod ti se kompajlira brze, ali je neoptimizovaniji , sa optimizacijama naravno kompajliranje traje sporije , nekom logikom bi mogao da dodjes do rezultata da bi za savrsen kod imao nograniceno dug compile time (opet halting problem :))
bas pokvarena sorta bio onaj alan tjuring :)
ajd pozdrav
Aca
[ de_c0der @ 11.01.2007. 17:48 ] @
Zaebes kompajlere, sta je sa ph #7? deadline je vec odavno prosao..
edit:
imam u planu se bacit na proucavanje kompajlera (za pocetak samo jednog), znaci sve o njemu, sto god uspijem nac na netu, a zatim i kako organizira kod, koji sve kod dodaje, kako radi optimizaciju al bas ono sve o njemu... e sad pitanje na koje se dvoumim .... koji kompajler da to bude?
Razisljao sam o delphiu i zakljucio da nije najbolji izbor jer skoro nijedan server-side program nije u njemu napisan..
Znaci ostaje mi C/C++, a sad da cujem od vas koji je najzastupljeniji kod (ovdje ne mislim na soruce  , nego rijec kod.. npr. bio sam kod Pere..) pravljenja server-side programima jer nisam upucen u to?
[Ovu poruku je menjao de_c0der dana 11.01.2007. u 19:37 GMT+1]
[ Mitrović Srđan @ 11.01.2007. 19:27 ] @
GCC ->
gcc.gnu.org/
Medjutim sudeci po tvom fondu IT reci i izraza kao i same tematike
treba pre samog proucavanja rada kompajlera da proucis samu arhitekturu
racunara npr pa tek se onda bacis na neke druge teme.
Naravno poznavanje osnovnih pojmova ne bi skodilo.
[ Burgos @ 11.01.2007. 19:46 ] @
Definitivno za ES bisere...
[ RooTeR @ 12.01.2007. 00:00 ] @
Citat: EArthquake:
nekako se sve vrti oko halting problema ovde
Aco, to o chemu ti prichas nema apsolutno nikakve veze sa halting problemom :)
[ EArthquake @ 12.01.2007. 00:07 ] @
o gcc, u sustini o bilo kom kompajleru , mozes celu knjigu da napises :)
imas gcc complete reference , mada to i ne zailazi u dizajn kompajlera , i samu teoriju iza svega toga , vec cisto vezano za gcc
a naravno i man gcc nebi bilo lose da vidis :)
al ja bi ti reko da se manes corava posla , pogledaj samo pocetak teme , ti si hteo da reversas win32 api i da trazis bugove u njemu !
a sad bi da pises knjigu o arhitekturi kompajlera ,
nebih voleo da ovo zvuci lose, divim se tako velokom entuzijazmu , ali polako , budi siguran da razumes sve te stvari , radi za sebe prvo, pa kad ih bas naucis, lako ces onda da napises nesto o tome ,
kad imas volju naucices sve sto ti treba
samo ti radi , pa za godinu dana , ako ne batalis sve to , videces gde ces biti
aj pozdrav
Aca
[ EArthquake @ 12.01.2007. 00:11 ] @
rajko , samo malo drugacija interpertacija, hteo sma da kazem da se program u tom slucaju nikada nebi zavrsio
priznajem da sam dosta izkrivio smisao
my bad
znas da nisam skolski potkovan, kao pojedinci :)
pozdrav
[ fearless @ 12.01.2007. 00:14 ] @
Citat: sta je sa ph #7? deadline je vec odavno prosao..
Deadline je razlicita stvar od datuma objavljivanja. Deadline je zadnji rok predavanja tekstova,
ali za neke ljude vazi zvanicni (onaj na sajtu) a za neke nezvanicni (kasnije). Sa obzirom da je
dosta autora zauzeto ispitima (ukljucujuci i mene kao urednika) niko jos nema vremena. Ali
ne brini, bice kroz koju sedmicu ;) Btw, ti si prvi koji se uopste to zapitao, drago mi je da
nekoga interesuje.
[ de_c0der @ 12.01.2007. 11:09 ] @
Citat: fearless:Btw, ti si prvi koji se uopste to zapitao, drago mi je da nekoga interesuje.
Ja sam Passwd, nesto sam zaebo sa onim nickom.. jos mi je zao zbog onog txta, nadam se da se ne ljutis :P
Btw. kako me nebi interesiralo, kad izadje novi ph zine dobijem neki poticaj za daljnje ucenje :P
z
edit
@Earthquake:
"al ja bi ti reko da se manes corava posla , pogledaj samo pocetak teme , ti si hteo da reversas win32 api i da trazis bugove u njemu !
a sad bi da pises knjigu o arhitekturi kompajlera"
Odakle ti to da bi pisao knjigu o arhitekturi kompajlera? 
Pazi... kad malo bolje pogledas sve je to tu negdje i sve je to povezano, tako da ako zelim se bavit reversovanjem Win32apija [ne zelim se time bavit, to je samo jedan dio koji moram proc od jos tonu toga] bilo bi dobro da prvo upoznam kompajlere u kojima su ti programi napravljeni jer se inace lako izgubi po samoj organizaciji koda.... najlakse postavit breakpoint na neki api i izvrsit program do njega pa onda uc u taj api pa sa njim u native apije i sl., mada prvo moram skinut driver studio jer sa ollyem me doceka SYSENTER kada se prelazi u ring0 :P
[ McKracken @ 17.01.2007. 13:02 ] @
Citat:
imam u planu se bacit na proucavanje kompajlera (za pocetak samo jednog), znaci sve o njemu, sto god uspijem nac na netu, a zatim i kako organizira kod, koji sve kod dodaje, kako radi optimizaciju al bas ono sve o njemu... e sad pitanje na koje se dvoumim .... koji kompajler da to bude?
Razisljao sam o delphiu i zakljucio da nije najbolji izbor jer skoro nijedan server-side program nije u njemu napisan..
Sta znaci "nijedan server-side program nije napisan u Dephiju" ?
Kako zamisljas da vidis "koji kod dodaje" ?
Uzmi lepo čika Knutha pa na citanje :) trebace ti bar godinu dana :)
[ de_c0der @ 23.01.2007. 19:36 ] @
Citat: McKracken: Sta znaci "nijedan server-side program nije napisan u Dephiju" ?
To znaci da niti jedan server-side program (ili ti po unixovom deamon) nije napisan u delphiu! Ne znam sta u toj recenici nije jasno, pod server-side programe/deamone smatram apache, razno razne smtp servere, ftp servere i ostalo!
I za ovo..
Citat: McKracken:
Kako zamisljas da vidis "koji kod dodaje" ?
Pa svaki kompajer doda neki kod prije nego sto se TVOJ (onaj koji si pisao u programu) izvrsavat..izuzev asm kompajlera (nasm/tasm/masm)!
Preciznije, na "kod koji dodaje" sam mislio KAKO KOMPAJLER/LINKER "konvertira" programski kod (pascal, c/c++, asm, delphi, ...) i preko njega stvara opcode, znaci Fja(1,2,3,4) je zapravo:
push 4
push 3
push 2
push 1
call Fja
..i ostale stvari
Citat: McKracken:
Uzmi lepo čika Knutha pa na citanje :) trebace ti bar godinu dana :)
A koji ce mi racku on?
[ McKracken @ 27.01.2007. 20:31 ] @
Vidis, postoji pristojan broj (u nekim slucajevima takoreci mission critical) server side aplikacija koje su pisane u npr Delphiju. Cisto kao primer, NEme SCADA implementacije su radjene u njemu kao i jedan broj billing aplikacija. To sto ti ne znas da ih ima ne znaci da ih nema.
A Knutha bi trebalo da procitas da vidis da stvari ne funkcionisu bas tako. Procitaj za pocetak Bison/Yacc dokumentaciju pa onda ponovo procitaj svoj prethodni post. Za pocetak da bar shvatis razliku izmedju parsera, kompajlera i linkera.
Tacnije, ocigledno je da si zagrebao po povrsini (pohvalno) i da ti se cini da to razumes (obecava) ali je istina ipak zakopana malo dublje (nazalost) :)
(nije mi namera da zvucim grubo i uvredljivo, ali bi trebalo da plivas jos dosta pre nego pocnes sa davanjem ovako bahatih izjava)
[ de_c0der @ 28.01.2007. 11:25 ] @
Citat: McKracken: Vidis, postoji pristojan broj (u nekim slucajevima takoreci mission critical) server side aplikacija koje su pisane u npr Delphiju. Cisto kao primer, NEme SCADA implementacije su radjene u njemu kao i jedan broj billing aplikacija.
Samo cu ti rec LOL :D
Citat: McKracken: Za pocetak da bar shvatis razliku izmedju parsera, kompajlera i linkera.
Hmmm.. morat cu te razocarat jer ipak mislim da znam koja je razlika izmedju parsera, kompajlera i linkera
Citat: McKracken:
Tacnije, ocigledno je da si zagrebao po povrsini (pohvalno) i da ti se cini da to razumes (obecava) ali je istina ipak zakopana malo dublje (nazalost) :)
Pazi, ja sam jako u sirinu otisao i na svakom sam dijelu bar po povrsini zagrebao, tako sto se tice nekih problema vec sam izgrebao do dna, a sto se tice nekih drugih kao sto vidis je samo zagrebano po povrsini
Citat: McKracken:
(nije mi namera da zvucim grubo i uvredljivo, ali bi trebalo da plivas jos dosta pre nego pocnes sa davanjem ovako bahatih izjava)
Ovako, bahatu izjavu nisam dao (mozda sam ti samo tako zvucao)!
A za ovo sam jako svjestan, svjesniji od tebe... da jos moram puno "plivat", al bar za razliku od nekih (nije mi namjera da vrijedjam) svak idan "preplivam" jednu zavidnu duljinu puta ;)
Btw. imam 17 god, ako ovako nastavim plivat ne znam di cu bit za 10 god?? Ja se nadam da cu do tad daleko otplivat al opet necu doc do kraja jer kraja u IT-u nema, stvari se jednostanvno prebrzo razvijaju i sve ostalo tako da ..
z
[ McKracken @ 28.01.2007. 15:19 ] @
Citat:
Samo cu ti rec LOL
Kao sto rekoh, ako nesto ne znas da postoji to ne znaci da ne postoji. Ja odgovorno tvrdim da postoji jako puno mission critical aplikacija koje su radjene u Delphiju (kao sto ti rece server-side) jer sam ih video u akciji. Razlozi zasto to nije onoliko cesto kolio bi moglo uopstenisu tehnicke prirode.
Jos uvek postoje i COBOL aplikacije koje rade mssion critical stvari.
Ipak, ima ovde ljudi koji imaju iskustvo koje je duze od 17god.
Citat: Hmmm.. morat cu te razocarat jer ipak mislim da znam koja je razlika izmedju parsera, kompajlera i linkera
Znam da mislis ali se to ne vidi iz postova : )
Npr, kako ce moderni kompajleri "pretvoriti" ovo u opcode?
Code:
for (a=1;a<100;a++){
b=a;
};
[Ovu poruku je menjao McKracken dana 28.01.2007. u 16:53 GMT+1]
[ de_c0der @ 28.01.2007. 16:52 ] @
Citat: McKracken:
Npr, kako ce moderni kompajleri "pretvoriti" ovo u opcode?
Ne znam koja je poanta toga? Al nije vazno, evo rezultata na par razlicitih kompajlera:
Borland C++ Builder 6
kod:
Code:
for (int a=1;a<100;a++){
int b=a;
}
rez:
Code:
00401181 |. C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1
00401188 |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0040118B |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0040118E |. FF45 FC INC DWORD PTR SS:[EBP-4]
00401191 |. 837D FC 64 CMP DWORD PTR SS:[EBP-4],64
00401195 |.^7C F1 JL SHORT Project2.00401188
GCC
kod:
Code:
for (int a=1;a<100;a++){
int b=a;
}
rez:
Code:
004013E1 |. C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1
004013E8 |> 837D FC 63 /CMP DWORD PTR SS:[EBP-4],63
004013EC |. 7F 0D |JG SHORT Project1.004013FB
004013EE |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]
004013F1 |. 8945 F8 |MOV DWORD PTR SS:[EBP-8],EAX
004013F4 |. 8D45 FC |LEA EAX,DWORD PTR SS:[EBP-4]
004013F7 |. FF00 |INC DWORD PTR DS:[EAX]
004013F9 |.^EB ED \JMP SHORT Project1.004013E8
Borland Delphi Arhitect Trial
kod:
Code:
var a,b:integer;
begin
for a:=1 to 99 do b:=a;
end.
rez:
Code:
00407C57 . B8 01000000 MOV EAX,1
00407C5C > 40 INC EAX
00407C5D . 83F8 0B CMP EAX,63
00407C60 .^75 FA JNZ SHORT Project1.00407C5C
Hmmm, ima li smisla dalje? Mislim da su dovoljna ova 3 kompajlera, nista modernije nemam.. sad ide pitanje zasto to ne ispadne kao b=99 bez for petlje?
z
[ de_c0der @ 28.01.2007. 17:04 ] @
Jos za ovo..
Citat: McKracken: Ipak, ima ovde ljudi koji imaju iskustvo koje je duze od 17god.
Hmm.. iskreno da ti kazem, takvog covjeka jos nisam sreo.. pa bih te zamolio da napises njihova korisnicka imena tu na ES-u
[ McKracken @ 28.01.2007. 17:13 ] @
OK .. probaj da promenis stepen optimizacije i da pre toga pokusaj da rucno "optimizujes" ovaj kod i mislim da ces skapirati o cemu pricam :)
Ako ne skapiras, onda Knuth :)
Citat:
Hmm.. iskreno da ti kazem, takvog covjeka jos nisam sreo.. pa bih te zamolio da napises njihova korisnicka imena tu na ES-u
Sreo si , samo nisi pazio na casu : )
[ de_c0der @ 28.01.2007. 19:42 ] @
Citat: McKracken:
Sreo si , samo nisi pazio na casu : )
Mislis na sebe valjda?
[ fearless @ 28.01.2007. 22:45 ] @
Citat: Btw. imam 17 god, ako ovako nastavim plivat ne znam di cu bit za 10 god??
Onde gde si stao sa 24-25, kad si ukapirao da mozes da zaradis na tome sto do sada znas i da nema
potrebe da ugrozavas svoj socijalni zivot dalje tako sto ces dane provoditi kodirajuci i citajuci tonu
literature (vec ces ici malo sporijim tokom i uciti ono sto posao od tebe zahteva). Sad mislis "ja nikad
necu stati". I ja sam mislio...
[ McKracken @ 29.01.2007. 02:19 ] @
Firles: So true 
[ de_c0der @ 29.01.2007. 08:38 ] @
Citat: fearless: Onde gde si stao sa 24-25, kad si ukapirao da mozes da zaradis na tome sto do sada znas i da nema
potrebe da ugrozavas svoj socijalni zivot dalje tako sto ces dane provoditi kodirajuci i citajuci tonu
literature (vec ces ici malo sporijim tokom i uciti ono sto posao od tebe zahteva). Sad mislis "ja nikad
necu stati". I ja sam mislio...
Hmmm.. svjestan sam toga! Mislim da je najveci problem odredit kada stat (jer se ne moze sve znat), znaci vec sad si trebam postavit cilj dokle zelim doc i onda lijepo ucit dok ne dodjem do cilja! Jer kad bi samo ucio i kodirao do svoje 70-te god. od toga nista nebi bilo=> bilo bi to da je mi je zivot prosao sjedeci na ovoj stolici ;) , a to naravno mislim da nitko nebi volio da mu se to desi!
Tako da treba nac ispravan omjer znanja(mislim na IT znanje):zivota(socijalni zivot, drustvo, obitelj?..)
Jer kad se bolje pogleda sve je ovo prolazno i ono sto sada znam za 5 godina vise necu moc nigdje primjenit (malo sam pretjero, al malo) jer se stvari jako brzo mijenjaju! Evo banalan primjer kad vec petljam sa GINA-om! Znaci ja sad mogu naucit sve o njoj, znat ju nazmirecki iskodirat, rasturat sve sto se tice nje i sta mi to znaci kad je sa Vistom GINA izbacena=>zakljucak:sav moj trud, cijelo to vrijeme koje sam potrosio na ucenje o njoj je propalo u vodu i nist koristi od toga vise jer toga (GINA-e) vise nema ("nije u upotrebi")
z
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|