Author Topic: Newbie crackME - 18->[SOLVED]  (Read 2351 times)

robocop

  • Newbie
  • *
  • Posts: 13
Re: Newbie crackME - 18
« Reply #30 on: February 09, 2007, 12:08:01 PM »
Code: [Select]
...U levelu 1 to bylo horsi.Nez sem si sepsal utilitku,ktera mi to prepocetla zpatky,tak to chvilku trvalo... Ja som to najskor robil rucne s kalkulackou, pri tretom znaku ma to preslo, tak som to prepisal do C s tym, ze som sa asi 10 minut babral s prepisom ROL do ANSI C.....

2 Master & Eraser: jeste se vratim k lvl1, proc tak slozite? (pravda, ja sem to taky zacal delat na papire...) pro vetsi efektivitu a usporu casu - staci pred ten ror a xor hodit bp, vyeditovat a upravit si hodnotu v esi (nebo edi... ted nevim pisu zpameti) tak aby se do cyklu dostali znaky, s kterejma se to ma na konci porovnavat, vyedituju ror a xor a otocim to na xor a rol, hodim bp za ten cyklus, spustim a pak si dumpnu to místo (asi v edi) kam se to "upravilo" a mam key

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Re: Newbie crackME - 18
« Reply #31 on: February 09, 2007, 02:46:25 PM »
Jako jiste,ale je me to nevadilo.Aspon sem si zase trochu procvicil inline asm.

BTW:Ted sem se sekl na lvl5.A zatim nevim kudy kam.Vsiml sem si tam nejakeho tls,ale jeste nevim,jestli to je to co hledam nebo ne.Budu to muset jeste nejak nastudovat... :confused:

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #32 on: February 09, 2007, 07:10:53 PM »
Ja som si zase precvičil prepis základných in?trukcií do ANSI C... :)

Master: Hmm, to mi tie? nič iné neostáva, len ?tudovať. Av?ak chvíľku sa v tom e?te rád porýpem, lebo neni nad to, keď to človek doká?e odhaliť sám a pokiaľ sa mi to v tomto prípade nepodarí, nevadí, Hypnove CM splnilo účel, opäť som načerpal nové vedomosti.

Inak v?imol som si e?te ďal?ie základné prvky anti-crackingu - funkcie VirtualProtect(), ďalej GetModuleHandle(), GetProcAddress() na MessageBox().

Tá sekcia v PE hlavičke s názvom .tls trochu smrdí...  :eek:
« Last Edit: February 09, 2007, 07:52:20 PM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

llAmElliK

  • [TiME4CRiME]
  • Administrator
  • VIP
  • *****
  • Posts: 960
Re: Newbie crackME - 18
« Reply #33 on: February 09, 2007, 07:40:13 PM »
V levelu 5 je pouzit trik ktery mimo jiny uziva ExeCryptor - pomoc pro trasovani je jednoducha - OllyAdvanced Plugin a zatrzeni Break On TLS Callback (viz obrazek) - restart Olly ,spravny BPX a vyhodi Vas to tady - a dal je to uz na Vas..

00401XXX  /.  55               PUSH EBP
00401XXX  |.  8BEC          MOV EBP,ESP
00401XXX  |.  83C4 F4    ADD ESP,-0C
00401XXX  |.  56            PUSH ESI
00401XXX  |.  57            PUSH EDI
00401XXX  |.  51            PUSH ECX
00401XXX  |.  52            PUSH EDX
TiME AND CRiME ARE ETERNAL-REVERSE ENGINEERiNG iS MODERN PHiLOSOPHY AND iSN'T CRiME
[TiME4CRiME]

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #34 on: February 09, 2007, 08:21:06 PM »
Díky za hint, do?iel som na to...  som tam. Teraz sa zase trápiť s algoritmom...

Inak tento plugin mi nejako u?iel pozornosti. Zjavne mô?em ostatné hidovačky vymazať a pou?ívať tento namakaný kus dynamickej kni?nice.

Mám to, sakra to bolo veľmi easy, ale len vďaka pár skúsenostiam pri lvl4.

Tak?e, teraz ten posledný, hmm, trasúce sa okno... mal by som sa zrejme zamerať na jednu známu API funkciu. Uvidíme... pre dne?ok si dám oddych, u? mám po celom tý?dni nafúknutú lebznu.   :p
« Last Edit: February 09, 2007, 08:48:52 PM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Re: Newbie crackME - 18
« Reply #35 on: February 09, 2007, 08:39:50 PM »
A bez pouziti pluginu by to slo jak?Zkousel sem kdejake finty a neslo mi to.

llAmElliK

  • [TiME4CRiME]
  • Administrator
  • VIP
  • *****
  • Posts: 960
Re: Newbie crackME - 18
« Reply #36 on: February 09, 2007, 08:56:21 PM »
Quote from: Master
A bez pouziti pluginu by to slo jak?Zkousel sem kdejake finty a neslo mi to.

:D - netrasovat v XP , jinde to myslim nefunguje...

Je to co jsem rikal - pred samostnym REversovanim dukladne prozkoumat target - TLS trik umi odhalit napr.LordPE - viz TLS Table...

BTW - jenom dodam co tady bylo jiz receno, cme jsme jen probehl (nemam vuubec cas, navic je tam moc pocitani na mne:p ) ale je pravda ze je velmi pekne - fakt povedeny - diky.
« Last Edit: February 09, 2007, 10:23:47 PM by llAmElliK »
TiME AND CRiME ARE ETERNAL-REVERSE ENGINEERiNG iS MODERN PHiLOSOPHY AND iSN'T CRiME
[TiME4CRiME]

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #37 on: February 09, 2007, 09:21:38 PM »
Quote from: Master
A bez pouziti pluginu by to slo jak?Zkousel sem kdejake finty a neslo mi to.

To presne netu?ím, ale povedal by som, ?e práve ďal?ie vlákno sa stará o daný checkovací algoritmus, tak?e vlastne daný plugin spravil to, ?e dovolil krokovať kód onoho vlákna.

No a TLS slú?i k tomu, aby sem ulo?ené dáta boli prístupné práve k aktuálnemu vláknu a zabezpečí, aby neboli menené iným.

Inak som sa dočítal, ?e vraj pomáha nastaviť v Olly tzv. System breakpoints v Options - Events. Dačo to robí, no nejako to nie je ono... :(

//edit
Hmmm, som si hovoril, ?e TLS by sa dalo eliminovať vymazaním, no nevedel som presne ako. Tak?e, díky za ďal?í tool do zbierky - LordPE. Inak, teraz ma napadá, ?e ono by sa to dalo kľudne realizovať i ručne, stačí vedieť správny offset a prepísať si tie 2x2 bajty i sám.
« Last Edit: February 10, 2007, 11:18:56 AM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

CZerezpiCZkin

  • Junior Member
  • ***
  • Posts: 181
Re: Newbie crackME - 18
« Reply #38 on: February 09, 2007, 09:46:58 PM »
Quote from: Master
A bez pouziti pluginu by to slo jak?Zkousel sem kdejake finty a neslo mi to.


Ja som na zdolanie urovne 5 nepotreboval ten plugin. Sustredil som sa na antiattach a po jeho vyradeni som to len attachol. Algo pre lvl5 je fakt jednoduche, tu islo hlavne o to dostat sa po to algo...
CZpCZ

Conflict

  • g0d i5 just a stat1st1c
  • Senior Member
  • ****
  • Posts: 475
Re: Newbie crackME - 18
« Reply #39 on: February 09, 2007, 11:08:21 PM »
s TLS se vyporadavam jednodusse. otevru target v LordPE a proste ho smazu. Takhle sem dal Final test za 5 minut. Mazani TLS delam bezne v kazdym targetu.

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #40 on: February 09, 2007, 11:37:04 PM »
Quote from: Conflict
s TLS se vyporadavam jednodusse. otevru target v LordPE a proste ho smazu. Takhle sem dal Final test za 5 minut. Mazani TLS delam bezne v kazdym targetu.

No, skúsil som to s odstránením TLS sekcie, dostanem sa tam, ale aplikácie sa nechová korektne, no dá sa povedať, ?e podstatu to splnilo.

V tomto prípade je pou?itie Olly Advanced plugin-a čistej?ie a navy?e nemusím modifikovať target.

Inak hovorí? o lvl5, či skutočne o final test-e, či?e lvl6?



OK, tak som sa na chvíľku vrátil k tomu poslednému testu a zrejme budem potrebovať nejaký hint, resp. maličké nakopnutie, aby som sa pohol ďalej, no nedostal rie?enie zadarmo.

Predpokladám, ?e pri správnej kombinácii meno/serial sa okno zatrasie vo vertikalnej osi, tak?e trasenie podľa horizontály je neúspech. Preto som sa zameral na funkciu SetWindowPos() a taktie? musí aplikácie nejakým spôsobom získať oba reťazce, doteraz sa tak dialo pomocou GetDlgItemText(). Omrkol som i v?etky SendMessage() a SendDlgItemMessage().

Aktivoval som Olly Advanced plugin a pridal voľbu UnhandledExceptionFilter. Stále v?ak skapam na SEH. Presnej?ie ide o

004018BE   add al, 33
004018C0   shl byte ptr ds:[edi+ecx*4+5], 0      ;  Shift constant out of range 1..31
004018C5   add byte ptr ds:[eax], al
004018C7   add byte ptr ds:[ebx+5A5B04C4], al


Skúsil som i odstrániť TLS, toto je v?ak, dá sa povedať funkčné, tak pre lvl5.

Daný kus kódu som priamo v OllyDbg zaNOPoval a tým som sa dokázal dostať ďalej (0x00402010).  Pokračujem a vidím, ?e som skončil v user32.dll.   :confused:
« Last Edit: February 10, 2007, 12:51:14 AM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Re: Newbie crackME - 18
« Reply #41 on: February 10, 2007, 02:03:08 PM »
Tak sem zdarne prosel final testem,ale ani za ho*no nereknu,jak pracuje :D
Jen sem vyuzil nedokonalosti kodu a ziskal tak SN.Kdyby to bylo jen trochu pozmenene,tak sem nahranej.Muze nekdo neco rict k pouzitemu anti triku?At se pohnu trochu dopredu tak jak by to melo byt.

Mam dojem,ze v SEHu se prepocitavaj adresy kousku kodu a na ty se presmerovava.Ale je to celkove nejaky zmateny.

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #42 on: February 10, 2007, 04:23:37 PM »
Ja som haluzne na?iel nejaký taliánsky tutoriál ohľadne reverzovania SEH a zisťujem, ?e dané "kon?tanty", ktoré tam spomínajú, k tým som sa dopracoval e?te včera večer, kedy som tak haluzil, ?e ani neviem, jak som sa tam mohol vôbec v Olly ocitnúť. Momentálne som na takýchto riadkoch, či?e pri trap-flag checku.

004010C9  mov edx, dword ptr ss:[esp+C]
004010CD  mov ecx, dword ptr ss:[esp+4]
004010D1  cmp dword ptr ds:[ecx], 80000004


Hmm, ale je to pekný humáč... a pritom try-except-finally som pou?íval v C# ka?dý den. Keď pozerám na prepis do ASM, tak sa mi zdvíha ?alúdok.
« Last Edit: February 10, 2007, 05:07:55 PM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

CZerezpiCZkin

  • Junior Member
  • ***
  • Posts: 181
Re: Newbie crackME - 18
« Reply #43 on: February 10, 2007, 06:59:30 PM »
Quote from: eraser
Predpokladám, ?e pri správnej kombinácii meno/serial sa okno zatrasie vo vertikalnej osi, tak?e trasenie podža horizontály je neúspech.


Ee, nemas pravdu, na spravnom konci je hlasenie "Goood job."

Len pre nakopnutie som spravil nejaky ten postup, dufam, ze bude zrozumitelny. Keygen pre Level 3 mam hotovy, ale pre Final test este nemam - uz ho nestiham. Takze keygeny mozno poslem naraz neskor.


2 HypnotiX:
Chcel by som ta poprosit o zverejnenie zdrojakov po uzavreti tohoto CME, nech sa nieco priucim aj ja co sa tyka MASM... Dakujem.  :)

EDIT: Na podnet Erasera opraveny preklep v zneni finalneho hlasenia (chybalo tam jedno "o").  :rolleyes:
« Last Edit: February 10, 2007, 07:26:01 PM by CZerezpiCZkin »
CZpCZ

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: Newbie crackME - 18
« Reply #44 on: February 10, 2007, 07:16:37 PM »
Tak?e presnej?ie ide zrejme o "Goood job", túto hlá?ku som si v?imol po otvorenení .exe súbora v hex editore a nachádza sa presne pre textom "Final Test". No, nevenoval som tomu bli??iu pozornosť.

Díky za postup, mrknem si ho neskôr, momentálne e?te trochu ?tudujem SEH a e?te sa rýpem v OllyDbg.

Ohľadne prosby toho zdrojáku sa tie? pripájam...


Po masívnych konzultáciach a radách Robocop-a sme narazili na zaujímavý blok, ktorý začína na adrese 00401711. Celé som to skúsil preanalyzovať a vyzerá to veľmi pekne. Predpokladám, ?e sa MessageBox dynamicky loaduje cez známe funkcie GetModuleHandle a GetProcAddress a je mo?né si v danom bloku v?imnúť i strlen funkciu... no kľudne sa mô?e jednať o mätúci kus kódu, ktorý bol zle disassemblovaný. Hold funkcia VirtualProtect mení jeden byte na B8... sakra, sakra. Hmm, a preklad na adrese 004016D8 ;  ASCII "Final Test"...


Vrátil som sa k VirtualProtect funkcii, tro?ku som pre?mejdil, čo do nej vstupuje a pri tej príle?itosti som na?iel tento link.   :D

http://www.petesh.com/archives/2006/02/detecting_debuggers.html

Či?e ide o prepísanie vstupného bodu volania funkcie DbgUiRemoteBreakin(), ktorá je aktívna v prípade natiahnutia u? spustenej aplikácie debuggerom (napr. OllyDbg - File - Attach). Ak existuje teda tento proces, tak sa  pomocou VirtualProtect naloaduje do EAX (MOV EAX -- B8) funkcia ExitProcess(), ktorá sa následné zavolá (D0FF -- CALL EAX).

-- tak som si sosol CZpCZ ten tvoj texťák a vidím, ?e si toto odhalil a týkalo sa to lvl5.


OK, tak jeden serial mám - díky za tip, Master... ale funguje len pri nezadanom mene. V?imol som si, ?e sa prechádzalo niektorými časťami, ktoré som tu spomínal. Videl som v stacku funkcie GetVolumeInformation, či strlen.
« Last Edit: March 08, 2007, 07:11:56 PM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation