RE FORUM

[REVERSE ENGINEERING] => Newbie => Topic started by: joe on August 28, 2005, 03:15:13 PM

Title: Newbie crackME - 7 -> [SOLVED]
Post 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)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 28, 2005, 04:37:24 PM
jdu na to :)

Edit: hned sem nasel bug,nefaka mi extendet mod.Hned to hodi chybu.
Title: Oprava
Post by: joe on August 28, 2005, 04:53:14 PM
Omylom som pouzil chybnu pracovnu verziu. Tu je to uz funkcne.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Myllan on August 28, 2005, 08:00:30 PM
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  ;)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 28, 2005, 10:24:58 PM
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 29, 2005, 04:49:03 PM
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 29, 2005, 05:14:49 PM
Zajímalo by mně jak kdo odstranil NAG - já zhruba takhle (je to verze 1 resp 2)

Code: [Select]
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 29, 2005, 05:47:04 PM
ja sme nopnul adresu 00401146.na to zdrzovani sem se jeste nedival poradne,prvne sem to nopnul a neobjevilo se mi okno
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 29, 2005, 05:55:21 PM
Podla mna tu nepomoze zmena OEP. Nemalo by sa ako vytvorit hlavne okno (DialogBox).
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 29, 2005, 06:00:16 PM
@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........
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 29, 2005, 06:20:55 PM
2 llAmElliK : mal si pravdu. Da sa pouzit aj zmena OEP  :(
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 29, 2005, 06:31:05 PM
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........
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Z!L0G80 on August 29, 2005, 06:33:48 PM
podle me staci zmenit OEP na 04011A3 funguje to fajn ...
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 29, 2005, 06:39:40 PM
Quote from: Z!L0G80
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.......
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 29, 2005, 06:43:52 PM
No ja nevim,ja jak sji?dim kod,tak tam fakt nevidim jiny hodnoty podle zmeny casu.Tak fakt nevim :confused:
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 29, 2005, 06:44:57 PM
Ja som to patchol na adrese 00401031 na JMP 004011A3 a funguje to... :D
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 29, 2005, 06:50:35 PM
Quote from: Master
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........
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Myllan on August 29, 2005, 07:18:44 PM
Ja jsem zmenil 00401146 na JMP 0040118C, program se tvari spokojene.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 29, 2005, 11:00:56 PM
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 )
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 07:45:57 AM
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
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Myllan on August 30, 2005, 11:25:06 AM
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
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 30, 2005, 12:38:40 PM
Moh by někdo přesně definovat ty funkce který to tam tvoří?
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 30, 2005, 01:13:22 PM
a proc menit jmeno??? :D   :D  (normal MODE)

Master
V$/i-9984-t4c


Myllan
&z&b-9945-t4c
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Iron Screw on August 30, 2005, 01:26:21 PM
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)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 01:41:38 PM
Quote from: Conflict
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
Title: Bylo to rychle
Post by: NeptuN on August 30, 2005, 02:25:34 PM
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 03:12:03 PM
to samy co jsem ti psal u cme1  :D  makej vice  :rolleyes:
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 30, 2005, 03:19:55 PM
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 )
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 30, 2005, 03:25:17 PM
2 NeptuN:
Nie je problem to patchnut. Skus prijst na algoritmus vypoctu serialu a otoc ho pre svoju potrebu. To bude trosku zlozitejsie...
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 30, 2005, 04:20:04 PM
@ 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, ...
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 04:56:22 PM
Quote from: CZerezpiCZkin
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Iron Screw on August 30, 2005, 05:22:53 PM
Quote from: joe
@ 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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 30, 2005, 05:48:33 PM
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
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 06:28:16 PM
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??
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 30, 2005, 06:56:14 PM
Takze pre Normal mode:
Name: "CZpCZ"
Serial: "Lk%4-0000X"

To llAmElliK:
Neviem, ci splnim tvoje zelanie, prikladam aj strucny popis CME. :confused:
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 30, 2005, 07:04:18 PM
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)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 30, 2005, 07:39:24 PM
kod v ASM pro vypocet prvni casti SN

SN1 := (Name*SN2)/(1+SN2*SN2)

Code: [Select]
     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;
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 30, 2005, 07:42:46 PM
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
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 30, 2005, 07:50:37 PM
a tady jeste prikladam KG + source pro Normal mODe.
znaky sou omezeny na interval <21h, 7Ah>
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 30, 2005, 08:05:38 PM
Quote from: Master
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:
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 30, 2005, 08:32:21 PM
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 30, 2005, 09:10:23 PM
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. ;)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 31, 2005, 03:01:02 PM
Quote from: Conflict
SN mi nefunguje :confused:


Jak tu bylo napsano,spatne zobrazeni znaku.Tady je to v hexa:
Master
908B9F6F2D4142434445
Title: Newbie crackME - 7 -> [SOLVED]
Post by: CZerezpiCZkin on August 31, 2005, 03:34:42 PM
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
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Conflict on August 31, 2005, 04:29:32 PM
*****************************************************
Podle me tech lehkych crcME(az na #2) bylo hodne.
Chtelo by to uz fakt naky nad kterym by se stravily tak dva tejdny. ;)
*****************************************************
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 31, 2005, 04:37:20 PM
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.
Title: Newbie crackME - 7 -> [SOLVED]
Post by: llAmElliK on August 31, 2005, 05:07:00 PM
Quote from: Conflict
*****************************************************
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??)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on August 31, 2005, 05:29:43 PM
Myslis na to VB neco na ktery???Ja pisu na vsechno neco podrobnejsiho podle toho,co jsem pochopil :)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: joe on August 31, 2005, 05:36:29 PM
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)
Title: Newbie crackME - 7 -> [SOLVED]
Post by: Master on September 02, 2005, 12:13:03 PM
tak konecne sem sesmolil tut a pather.Enjoy  ;)