[ 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 ] @
Citat:
glupi:
LOL, no comment


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