RE FORUM
[REVERSE ENGINEERING] => Newbie => Topic started by: joe on August 28, 2005, 03:15:13 PM
-
Prikladam moju trosku, pri ktorej som musel viac debuggovat ako pri rieseni cudzieho CME. Princip je jednoduchy a snazil som sa tam udrzat prehladnost, aby sa z toho dalo nieco naucit (nieje tam nic schovane). Nenadavajte mi, ak sa Vam to bude zdat tazke. Ani sa mi nesmejte, ak sa vam to bude zdat privelmi jednoduche a primitivne priehladne. :)
Jazyk: ASM (MASM32)
Packer: nieje
Ochrana: Nag screen, Name/Serial (2 verzie)
-
jdu na to :)
Edit: hned sem nasel bug,nefaka mi extendet mod.Hned to hodi chybu.
-
Omylom som pouzil chybnu pracovnu verziu. Tu je to uz funkcne.
-
Hosi, hosi,
co kdyby jste si ty sve vytvory nejdrive otestovali:
zadam jmeno a heslo, stlacim Verify a No, try again.
Stlacim podruhe a Correct Code ??????
2 llAmElliK: uz mizim ;)
-
Vobec mi to nelezie do hlavy. Testovane na 2 pocitacoch to bezi ako ma. Podcenil som spolupracu s koprocesorom. Musi to asi zlyhavat na FWAIT. Mrzi ma to.
-
Dlho som hladal, co robi problem. Nakoniec som to predsa nasiel. Nemal som inicializovany FPU. Cudne je to, ze na Athlonoch sa FPU zasobnik zresetoval. Preto som netusil, ze je tam problem. Je to uz zbabrane, no viac-menej pre informaciu mala byt spravna verzia takto.
-
Zajímalo by mně jak kdo odstranil NAG - já zhruba takhle (je to verze 1 resp 2)
00401117 . 6A 00 PUSH 0
00401119 . FF75 08 PUSH DWORD PTR SS:[EBP+8]
0040111C . 6A 00 PUSH 0
0040111E . 6A 00 PUSH 0
00401120 . FFB5 7CFFFFFF PUSH DWORD PTR SS:[EBP-84]
00401126 . FF75 80 PUSH DWORD PTR SS:[EBP-80]
00401129 . FFB5 74FFFFFF PUSH DWORD PTR SS:[EBP-8C]
0040112F . FFB5 78FFFFFF PUSH DWORD PTR SS:[EBP-88]
00401135 . 68 00008080 PUSH 80800000
0040113A . 68 9F124000 PUSH FPCME22.0040129F <----PATCH Tady jsem nadefinoval dialog
0040113F . 68 9F124000 PUSH FPCME22.0040129F <----PATCH
00401144 . 6A 08 PUSH 8
00401146 . E8 F9020000 CALL
0040114B . A3 3E304000 MOV DWORD PTR DS:[40303E],EAX
00401150 . 6A 01 PUSH 1
00401152 . FF35 3E304000 PUSH DWORD PTR DS:[40303E]
00401158 . E8 35030000 CALL
0040115D . FF35 3E304000 PUSH DWORD PTR DS:[40303E]
00401163 . E8 30030000 CALL
00401168 . E8 43030000 CALL
0040116D . 8985 70FFFFFF MOV DWORD PTR SS:[EBP-90],EAX
00401173 . 8185 70FFFFFF>ADD DWORD PTR SS:[EBP-90],7D0
0040117D > E8 2E030000 CALL
00401182 . 3985 70FFFFFF CMP DWORD PTR SS:[EBP-90],EAX
00401188 . EB 02 JMP SHORT FPCME22.0040118C <---PATCH - tadz jsem nenechal zbytečně zdr?ovat
0040118A .^ EB F1 JMP SHORT FPCME22.0040117D
porovnejte to se svými adresami nebudu sem dávat originál - zajímalo by mně jestli by to ?lo změnou OEP.
-
ja sme nopnul adresu 00401146.na to zdrzovani sem se jeste nedival poradne,prvne sem to nopnul a neobjevilo se mi okno
-
Podla mna tu nepomoze zmena OEP. Nemalo by sa ako vytvorit hlavne okno (DialogBox).
-
@Master
Je tam fce GetTickCount - co? je funkce na zji?tění času od spu?tění systemu (vrací jej v milisekundách) - pokud si tam dá? BPX zjistí? ?e EAX je poka?dé jiné - pokud si dávám dobře dvě a dvě dohromady (tedy název cme a tuto fci) je JOE ?ibal - moje cme na podobným "plovoucím" principu se jmenovalo FUCKing CME........
-
2 llAmElliK : mal si pravdu. Da sa pouzit aj zmena OEP :(
-
OEP Change IAT Fixed....;)
Nevím nakolik to bude "ÚPLNĚ" funkční ale byla to taková rychlokva?ka.....
Ov?em mo?nost tady je jak sem říkal a JOE u? zjistil........
-
podle me staci zmenit OEP na 04011A3 funguje to fajn ...
-
podle me staci zmenit OEP na 04011A3 funguje to fajn ...
..jojo přesně tak - já sem ?el o něco ní? a? na adresu 401208 JMP 40118C
ale jak říká? ty - jde to je?tě jednodu?ejc.......
-
No ja nevim,ja jak sji?dim kod,tak tam fakt nevidim jiny hodnoty podle zmeny casu.Tak fakt nevim :confused:
-
Ja som to patchol na adrese 00401031 na JMP 004011A3 a funguje to... :D
-
No ja nevim,ja jak sji?dim kod,tak tam fakt nevidim jiny hodnoty podle zmeny casu.Tak fakt nevim :confused:
.......to jsem ti psal ve vztahu k tomu,kdy? jsem popisoval první patch a zru?il jsem druhým patchem tuhle funkci aby dialog naběhl hned - změnou OEP nebo jiným patchem na tuto funkci vůbec nedojde........
-
Ja jsem zmenil 00401146 na JMP 0040118C, program se tvari spokojene.
-
Name a SN pro normalni MODE. Extended az nekdy jindy.
CONFlict
?ŰR-zzzzz
je to velice pekny crcME, konecne sem byl dokopan k nauceni F-instrukci, dekuju Jou Jou ;)
s popisem prijdu pozdeji(mozna nikdy :D )
-
Tak,napadlo me to uz vcera,ale az dneska rano sem prisel na to,co dosadit.Proc lu?tit zpetne serial,kdy? upravim jen jmeno :)
>y:Master
1234-6789A
-
2 Master: prima napad s tim jmenem:):
Ś/v7-Myllan
1000-56789
Muzu poradit?
hxxp://babbage.cs.qc.edu/courses/cs341/IEEE-754.html
hxxp://babbage.cs.qc.edu/courses/cs341/IEEE-754hex32.html
-
Moh by někdo přesně definovat ty funkce který to tam tvoří?
-
a proc menit jmeno??? :D :D (normal MODE)
Master
V$/i-9984-t4c
Myllan
&z&b-9945-t4c
-
No to je dobry, ale co kdyby to byla normal APP ... a nekdo si to chtel regnout, tak tam bude pouzivat takovy divny znaky? Nejde to nejak udelat jen na cisla a pismena. Bez ctverecku a jinejch klikyhaku ?? (zatim jsem na to nekouk tak newim jak je to napsany)
-
a proc menit jmeno??? :D :D (normal MODE)
Master
V$/i-9984-t4c
Myllan
&z&b-9945-t4c
Protoze zatim nevim jak reverznout to zasrany pocitani :D
-
Tak se mi to taky podarilo, nag okna jsem se zbavil upravenim na adrese 0040106A, kde jsem Jmp posunul az za nag: JMP FPCME2.0040118C. A pak to heslo, proste jsem prepsal na adrese 00401320 prikaz JE na JNZ a bylo.
Jinak docela ok.
-
to samy co jsem ti psal u cme1 :D makej vice :rolleyes:
-
Ja som sa zasa nechcel dostat az po to, aby som menil meno. Vychadzal som z rovnice pre Normal mod: X=(a*b) + (a/b)
Ked som sa dopracoval k spravnemu SN pre moje meno, tak mi to nechcelo zozrat tie znaky cez editbox. :confused: Namiesto hodnoty 00 mi cez editbox stale nacitavalo 20. Zatial som sa zasekol tu a spekulujem dalej...
Name: "CZpCZ"
hexa prepis znakov SN: ( 36,48,52,42,2D,00,00,00,40 )
-
2 NeptuN:
Nie je problem to patchnut. Skus prijst na algoritmus vypoctu serialu a otoc ho pre svoju potrebu. To bude trosku zlozitejsie...
-
@ Iron Screw : Neskoro som si uvedomil, ze by tam naozaj mali byt len "normalne" znaky. Na to som este nestacil dozriet. Ucit sa, ucit sa, ...
-
Ja som sa zasa nechcel dostat az po to, aby som menil meno. Vychadzal som z rovnice pre Normal mod: X=(a*b) + (a/b)
Ked som sa dopracoval k spravnemu SN pre moje meno, tak mi to nechcelo zozrat tie znaky cez editbox. :confused: Namiesto hodnoty 00 mi cez editbox stale nacitavalo 20. Zatial som sa zasekol tu a spekulujem dalej...
Name: "CZpCZ"
hexa prepis znakov SN: ( 36,48,52,42,2D,00,00,00,40 )
Ja sem zhnil na necem podobnem,uz mam vypoctene znaky presne,akorat ze se jejich konce rozchazi,jako bych mel spatnou kalkulacku.Nevim proc to dela.Prvnich asi 6-7 bitu ve floatu(ST zasobnik) jsou stejny jako se jemnem,ale pak je to uplne jiny.Nevim kde vznika rozdil.
EDIT:
Moje udejaje:
Master
J?°Y-J?0Z
Nevim proc se mi to rozjizdi,budu zkouset koukat dale.
-
@ Iron Screw : Neskoro som si uvedomil, ze by tam naozaj mali byt len "normalne" znaky. Na to som este nestacil dozriet. Ucit sa, ucit sa, ...
Aha, takze je to tak napsany.... no me se to stavalo taky :)
Tam pak na konec vypoctu staci vzdycky mala kontrola, aby to vyhodilo jen cisla nebo pismena... ale jinak dobra prace! Asi si to taky zkusim vyresit az bude cas.
-
To s těma znakamy jsem říkal u? jednou - a změním to v podmínkách pro cme - proto?e v případě naprogramování BF u toho strávíme roky - teda je?tě jednou a pro poka?dý - v závěru o?etřete aplikaci tak aby pou?ívala znaky 0-9 ,a-z a A-Z.
Skill zůstane stejnej ale nebude to takovej mi?-ma? (max vkládejte pomlčku "-"
"2D")
Jinak cme je opravdu dobrý - akorát čekám na popis těch funkcí - mně toti? nejsou úplně jasný - a tě?ko potom pro kohokoliv dělat KG.
Díky
-
Tady tyhle radky nechapu:
004013E0 |. D915 75304000 FST DWORD PTR DS:[403075]
004013E6 |. D905 75304000 FLD DWORD PTR DS:[403075]
Zde se uklada jako ascii nas vysledek pri pocitani serialu,a zaroven se hned bere zpatky,AKORAT,bere trochu jinou hodnotu.A to nechapu, jakto??
-
Takze pre Normal mode:
Name: "CZpCZ"
Serial: "Lk%4-0000X"
To llAmElliK:
Neviem, ci splnim tvoje zelanie, prikladam aj strucny popis CME. :confused:
-
004013E0 |. D915 75304000 FST DWORD PTR DS:[403075]
004013E6 |. D905 75304000 FLD DWORD PTR DS:[403075]
Tu bol povodne zamer osetrit zaokruhlovanie. Neviem nakolko je to spravne. Pokusil som sa tak odstranit prebytocny zvysok, aby nerobili problemy cisla na nejakom xx mieste.
Porovnavanie robi FPU a ten vnutornepracuje s 80-bitovymi cislami!!!
Inak spominana rovnica je spravna: X=(a*b) + (a/b)
fstsw ax ;copy the Status Word containing the result to AX
fwait ;insure the previous instruction is completed
sahf
Tato cast ma na starosti prenos stavoveho flagu FPU do stavoveho flagu CPU.
Je to odpozorovane z helpu k FPU od Raymonda Filiatreaulta. V chm formate spm to nasiel na a su tam dost dobre popisane vsetky pouzite instrukcie: h**p://ghirai.com/hutch/files/SimplyFPU.zip
Je to sucast roznych kniznic a informacii z: h**p://ghirai.com/hutch/mmi.html
Nejake informacie o FPU mam aj z helpu FP Opcodes Help v MASM32 (neviem, ci je to jeho standardna sucast)
-
kod v ASM pro vypocet prvni casti SN
SN1 := (Name*SN2)/(1+SN2*SN2)
asm
pushad
finit
mov eax, dword ptr[Name]
mov ebx, dword ptr[SN2]
; spocitani jmenovatele
fld dword ptr[ebx] ; load SN2 do ST stack
fmul st, st ; ST := SN2*SN2
fld1 ; load 1.00 do ST stack
fadd st, st(1) ; ST := ST + ST(1)
; spocitani citatele
fld dword ptr[eax] ; load Name do ST stack
fld dword ptr[ebx] ; load SN2 do ST stack
fmul st, st(1) ; ST := ST*ST(1)
; SN1 := ...
fdiv st, st(2) ; ST := (Name*SN2)/(1+SN2*SN2)
fst dword ptr[SN1] ; store ST do promeny SN1
popad
end;
-
Tak konecne prvni cast hotova.Joovi dekuju z apomoc s rovnici,sice bych ji dal,ale asi az zitra po par hodinach :) Bo se separovanim urcitych casti mam fakt problemy.
Tak Normal mode:
Master
??źo-ABCDE
-
a tady jeste prikladam KG + source pro Normal mODe.
znaky sou omezeny na interval <21h, 7Ah>
-
Tak konecne prvni cast hotova.Joovi dekuju z apomoc s rovnici,sice bych ji dal,ale asi az zitra po par hodinach :) Bo se separovanim urcitych casti mam fakt problemy.
Tak Normal mode:
Master
??źo-ABCDE
SN mi nefunguje :confused:
-
Master-ove SN je podla mna v poriadku. Problem je asi s 1.znakom, lebo je z tych "nezobrazitelnych". Bude to potrebne napisat aj v hexa tvare.
-
Thx 2 Joe, za to, ze ma upozornil, ze v tom mojom popise az tak uplne nesedia adresy. :D Je tomu tak preto, ze to bolo kopirovane z povodnej verzie tohoto CME. V neskorsej verzii urobil Joe mensie upravy. Ale do podstaty fungovania samotneho algoritmu nezasiahol, takze ako vysvetlenie jednotlivych funkcii by to malo postacovat. Tie adresy treba brat len orientacne. ;)
-
SN mi nefunguje :confused:
Jak tu bylo napsano,spatne zobrazeni znaku.Tady je to v hexa:
Master
908B9F6F2D4142434445
-
Correct code pre Extended mode:
Name: "CZpCZ"
Serial: "?eG-sj@sX"
( Hexa prepis znakov serialu:3F,01,65,47,2D,73,6A,40,73,58)
Na riesenie postacuje spravny serial pre Normal mode, ktory treba XORovat. Najskor druhu cast serialu s menom a potom prvu cast serialu s tou druhou castou serialu (ktora je uz XORovana).
A je to! :D
-
*****************************************************
Podle me tech lehkych crcME(az na #2) bylo hodne.
Chtelo by to uz fakt naky nad kterym by se stravily tak dva tejdny. ;)
*****************************************************
-
No s tema dvouma tejdnama bych jeste pockal,zas taci kozaci nejsme :D
Jinak extended:
Master
ś¨Ż_-#00E
9ca8af5f2d0c23303045
Furt mi nechtela vyjit ta prvni cast a pak sem prisel na to,ze mam saptne obracene B :D Teda neprehozene :o
P.S.Tutor dneska nebo zejtra.
-
*****************************************************
Podle me tech lehkych crcME(az na #2) bylo hodne.
Chtelo by to uz fakt naky nad kterym by se stravily tak dva tejdny. ;)
*****************************************************
Mů?e? zkusit to z RELEASE :D- klidně ho ře?te "veřejně" - pokud ho lousknete rád ho potom vyměním - zatím co vím je pouze asi jeden nebo dva ře?itelé - nebo DARKERovo barevný cme.(nebo já budu uploadovat jeden target do RE&RE - taky NAG a trial - klidně mů?ete zkusit to - není na pratický příklad - za chvíli tam bude jmenuje se to Apius a je to skvělej tool na tracing call-ů )
Teď sem hodím já nějaký VB. (budete psát na toto cme někdo něco podrobněj?ího??)
-
Myslis na to VB neco na ktery???Ja pisu na vsechno neco podrobnejsiho podle toho,co jsem pochopil :)
-
Tak uz iba uvediem zdrojaky crackME. Aby fungoval extented mod,MUSI byt nastavena .text sekcia programu aj na zapis. Bud priamo pri linkovani prepinacom /section:.text,RWE alebo dodatocne v nejakom PE editore.
Upozornujem, ze zdrojaky nie su dobre okomentovane.
A este poznamka k pouzitej rovnici:
Kod1/Kod2+Kod1*Kod2=Name => a/x+a*x=b
Po uprave ide o riesenie kvadratickej rovnice:
0=a*x^2-b*x+a^2=a*x^2-b*x+a => 0=x^2-b/a*x+1
D=(b/a)^2-4
x1=(b/a+sqrtD)/2
x2=(b/a-sqrtD)/2 Neviem preco, ale toto nestiha (asi problem pri zaokruhlovani)
-
tak konecne sem sesmolil tut a pather.Enjoy ;)