RE FORUM

[REVERSE ENGINEERING] => Newbie => Topic started by: llAmElliK on May 04, 2007, 09:35:24 PM

Title: Unpack 02 - FSG v2.0->[SOLVED]
Post by: llAmElliK on May 04, 2007, 09:35:24 PM
PACKER - FSG 2.0 by bart

Najdete na danem ftp v adresari FSG - enJOY
Title: Re: Unpack 02 - FSG v2.0
Post by: Master on May 05, 2007, 10:47:31 AM
Díky moc,aspon ze si to nahodil,kdyz uz sme se nemohli porad stretnout.Many thx
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 05, 2007, 04:25:30 PM
Mám to hotové. Dal som to bez nejakého ?túdia ako na tento typ packera. Chvíľku som sa bavil i s krokovaním unpack rutiny... doporučujem napr. hneď úvodný trik s ESP. Určite to bude ka?dému jasné, keď sa mrkne do debuggera, prípadne si tých pár prvých in?trukcií pre-step-uje.

Na konci ma tro?ka ?tvali importy, musel som ručne zasahovať do dumpu a e?te aj mazať nejaké divné FThunky v ImportRec. Jednotlivé skupiny funkcií pre danú kni?nicu, resp. pointre na funkcie sú oddelené jedným nulovým DWORDom. Tuto sa nachádzali nejaké divné hodnoty 0xFFFFFF7F. Je to zámer FSG, či je to náhoda?

Nepodarilo sa mi v?ak skresať veľkosť, ale to sa mi nechce rie?iť, hlavne, ?e unpacknutý súbor funguje korektne. Dostal som sa na 128 517 bytov.

Video dodám neskor?ie, nechce sa mi in?talovať a nastavovať ten softík na capturing, mám ho na firemnom notebooku, tak?e cez tý?deň si tých 10-20 minút nájdem, keď u? viem, ako na to.
Title: jupiii
Post by: Conflict on May 05, 2007, 07:40:53 PM
OEP se mi podarilo dostat asi na 10 kroku, takze je to idealni pro OllyScript.
Taky sem mel problemy s importama. Musim priznat ze porad nevim jak imprec funguje. Postupoval sem asi nak takhle:
1. zadal sem do imprec OEP = 739D
2. pak IAT AutoSearch
a hodilo mi to jenom vetev msvcrt.dll. Nevi nekdo proc? Inu jako sedlak sem klikal na IAT Autosearch tak dlouho dokud mi nepribyly jeste dalsi 3 vetve. Nasledoval Fix Dump a exe jede. Pokud de o velikost (coz mi pripada zbytecny uvadet, ale pro mozne lepsi hledani chyb), tak ta mi 139 264 kB a po uprave v LordPE 128 310 kB.
Nastesti me zadny upravy IAT nepotkaly => sel bych se vykoupat o pul hodky driv.

mam radost ze sem to dal, ikdyz ani nevim jak
Title: Re: jupiii
Post by: eraser on May 05, 2007, 11:28:58 PM
Pokiaľ ide o IAT, ja som zmenil ručne RVA adresu na 0x1000, čo je vlastne začiatok import table, čo som zistil priamo z OllyDbg. Potom som vypočítal veľkosť, proste som odhadol koniec IAT a nech som tam zadal čokoľvek, tak mi to v?dy na?lo plno hovadín, tak?e toto som nepochopil, no vyrie?il som to cez ImportREC, ako som písal vy??ie. Čo sa týka početu kni?níc v import table, tak tých mám presne 9.

Pred prepisom RVA mi to tie? hodilo iba jednu kni?nicu, resp. FThunk, ako pí?e?, i?lo o funkcie z msvcrt.dll a RVA si nepamätám (niečo 0x12??), no size bola 0x54. S tým opakovaním klikaním na AutoSearch to potom skúsim a dám vedieť.

Jo, inak to OEP je fakt ľahké, ja som sa k nemu dopracoval postupne, resp. tromi BPX, prechádzal som ka?dú sekciu a pekne sledoval v EDI, čo sa mi to tam unpackuje. Keď ma to prestalo baviť, na?iel som vhodný jump a pokročil do ďal?ieho cykla. V podstate je ten jediný jmp near dosť lákavý.

Inak nejakú antidebug ochranu som si nev?imol, tak?e predpokladám, ?e FSG 2.0 ?iadnu nepou?íva.

Chcel som si to po vyrie?ení e?te raz prejsť, no hokej (a čo gratulácie...?  :rolleyes:  ) ma nepustil... :)  Popri sledovaní som na?iel nejaké video s unpackom, no jak to ten rákosník robil  :confused:  - pou?il len OllyDump s aktivovanou voľbou Rebuild Import - Method1. Toto som skúsil tie? a viem, ?e mi to nepomohlo, tak isto ako i u predchádzajúceho UPX. Tak?e nechápem, či mal rákos haluz alebo čarovnú verziu OllyDump-u. Povedal by som, ?e i?lo zrejme o veľmi jednoduchý target s minimom importov. Ďalej som sa pozeral na nejaký tutoriál, ďal?í ?ikmáč pou?íval také metódy, ?e mi do?lo zle, ale mo?no to bolo z tých ich znakov, tak?e prd som síce rozumel, no z obrázkov som usúdil, ?e daný spôsob nemusím.

Inak signatúra pre FSG 2.0 je pomerne jednoduchá. Dal by som tento chain...

87 25 ?? ?? ?? ?? 61 94 55 A4 B6 80 FF 13 73 F9

Čo sa týka LordPE, tak som testoval v?etky tri mo?nosti realign a v?dy mi vy?la uvedená veľkosť 128 517 bajtov. Pred úpravou som na tom veľkostne zhodne a to 139 264 bajtov.

Napadlo mi, ?e by som to skúsil mrsknúť totálne ručne, ale to by bola asi robota o hubu a dosť časovo náročná. A babrať sa s hlavičkou, jednotlivými sekciami, atď. to rad?ej vzdávam.
Title: Re: Unpack 02 - FSG v2.0
Post by: Conflict on May 06, 2007, 09:01:05 AM
jakto ze se nam rozchazi pocet DLL v importech? neopakuji se ti? mam jen 4 a .exe je funkcni, zkousel sem s nim pracovat a zadnej error to nehodilo.

OEP se hleda dobre, protoze staci dat BP na JMP
Code: [Select]
010001CD   ^\78 F3             JS SHORT notepad.010001C2
010001CF     75 03             JNZ SHORT notepad.010001D4
010001D1     FF63 0C           JMP DWORD PTR DS:[EBX+C]
010001D4     50                PUSH EAX
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 06, 2007, 11:46:41 AM
Ak mô?e?, tak hoď to unpacknuté exe do LordPE a potom PE Editor - Directories - Import table - (L) a hoď sem výpis, prípadne to mô?e? uploadnúť na unpackschool ftp. Ja ho tam nahodím, vrátane toho môjho unpacknutého súbora. Dávam tam dve verzie, surový unpack a potom i ten upravený cez LordPE. Mô?e? si to porovnať, prípadne skús e?te ten môj postup, čo som tu prezentoval.

O pár dní tam nahodím i to video, ale e?te to chcem tro?ku checknúť. Mo?no niečo objavím, resp. lep?ie pochopím problém s importmi.

unpackschool.free-site-host.com/UnpackingSchool/FSG_2_0/solutions/eraser/import-table
unpackschool.free-site-host.com/UnpackingSchool/FSG_2_0/solutions/eraser/unpacked-fsg2-zip


E?te ma napadlo, či nemá? tie importy priamymi pointermi, tzn. u teba to mô?e fungovať OK, keby si to v?ak dal niekomu inému, resp. na iný OS, tak by to u neho nemuselo fachať.
Title: Re: Unpack 02 - FSG v2.0
Post by: Master on May 07, 2007, 07:25:07 AM
Presne tak,oep uz neni problem.Jak pises Conflicte,hodis bp na ten jmp a ses po dvou skocich na oep.Ted sem se dival na ty importy a ty sou celkem lahudka.Zatim sem nezkousel nijak extra je opravit.Ale kdyz sem si prenastavil RVA a size,tak mi jich vyjelo celkem dost.Jinak tech importu je tam dost.Podivej se na na zpracovani api GetProcAddress.Uvidis,ze tam je tech importu mnohem vic jak 4.
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 07, 2007, 07:43:02 AM
Inak by ma zaujímalo, prečo má notepad.exe base na 0x1000000. Tá hodnota sa mi zdá pre executable dosť neobvyklá.

Určite ste to na?li, ale pre istotu tá fukcia GetProcAddress, čo spomína Master, je volaná na lajne... Stačí hodiť BPX a sledovať, resp. počítať jednotlivé importované funkcie. A vy??ie je LoadLibrary, kde sú zase vidieť moduly, resp. systémové kni?nice.

010001D6    FF53 14         call near dword ptr [ebx+14]             ; kernel32.GetProcAddress
Title: Re: Unpack 02 - FSG v2.0
Post by: Arab3h on May 07, 2007, 09:50:30 AM
Taky mam problemy s importy, doted si s tim hraju a nemuzu na to prijit. S ImportRec mi to taky nejde, jinak exe vypada krome tech importu funkcne
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 07, 2007, 10:31:43 AM
Nena?iel som spôsob, ako tie importy o?etriť iným spôsobom ne? ručne. Chvíľku som ?tudoval algo a pochopil som, prečo sú tie oddeľovacie thunky vlastne záporné hodnoty. Inak prepísať tých asi 5 hodnôt priamo v OllyDbg nie je a? taký veľký problém.
Title: Re: Unpack 02 - FSG v2.0
Post by: llAmElliK on May 07, 2007, 06:50:04 PM
Zkuste kouknout na tuhle IAT - taghle by mozna mohla vypadat (mozna - jinak plne funkcni unpack)
Title: Re: Unpack 02 - FSG v2.0
Post by: Conflict on May 07, 2007, 07:54:27 PM
v olly ty importy vidim, ale nevim proc je imprec nenajde?
co mam presne udelat?

// o minutu pozdeji: pockat.....

// o dalsich par minut pozdeji: vyreseno, v imprec sem to vsechno zmaknul. stejnej vypis jak llame.
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 08, 2007, 09:08:01 AM
Conflict: Získal si tie importy bez zásahu v Olly, resp. bez nutnosti editovať? Resp. dá sa priamo v ImportREC určiť, ?e daný pointer je vlastne ukončovací thunk?

Btw. čo si spomínal to zbesilé klikanie na find OEP, tak som to vyskú?al a nič mi to neprinieslo. Inak, aké si pou?il nastavenie v ImportREC, resp. zadal si ručne OEP na 0x739D, RVA na 0x1000 a veľkosť na 0x3?? (z hlavy si nespomeniem na tú presnú hodnotu)?

llAmElliK: Aký tool si pou?il na výpis tých importov?
Title: Re: Unpack 02 - FSG v2.0
Post by: Conflict on May 08, 2007, 10:06:56 AM
Quote from: eraser
Conflict: Získal si tie importy bez zásahu v Olly, resp. bez nutnosti editovať? Resp. dá sa priamo v ImportREC určiť, ?e daný pointer je vlastne ukončovací thunk?

Btw. čo si spomínal to zbesilé klikanie na find OEP, tak som to vyskú?al a nič mi to neprinieslo. Inak, aké si pou?il nastavenie v ImportREC, resp. zadal si ručne OEP na 0x739D, RVA na 0x1000 a veľkosť na 0x3?? (z hlavy si nespomeniem na tú presnú hodnotu)?

llAmElliK: Aký tool si pou?il na výpis tých importov?

Mam urcite chybu v nastaveni Imprec, protoze sem to musel delat takhle (bez uprav v Olly):
v Olly sem nasel misto importuu (a1=01001000), zistil sem polohu prvniho ukoncovaciho dwordu FF FF FF 7F (a2=0100101C). Velikost importu s=a2-a1=1C. V Imprec RVA=1000 + Size=1C + Get Imports. Ostatni importy se delaj stejne, zistim misto pocatku a konce, zistim velikost, nahazu hodnoty do Imprec a GetImports.

odpovim za llAmElliKa: Staci dat Save Tree v Imprec.
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 08, 2007, 10:35:03 AM
Jo, u? mi to je jasné. Tento postup sa mi zdá tro?ku zlo?itej?í, hlavne, čo sa týka výpočtov. V mojom prípade mi stačí zistiť začiatok, koniec, vzájomným odčítaním zistiť veľkosť v?etkých thunkov a ručne upraviť terminátory. Zbytok zabezpečí ImportREC.

Huh, tak Save Tree tlačítko som si nev?imol, asi budem musieť nav?tíviť očného. Díkes.
Title: Re: Unpack 02 - FSG v2.0
Post by: llAmElliK on May 08, 2007, 12:09:35 PM
Quote from: eraser
Huh, tak Save Tree tlačítko som si nev?imol, asi budem musieť nav?tíviť očného. Díkes.

..tlacitko SAVE a LOAD Tree je dost dulezite - protoze krom jineho ti umoznuji ulozit IAT do .txt souboru - jeho naslednou editaci a nacteni do targetu.

Jinak takto nastaveny impREC by mel postacit k 99% uspesne oprave importu.
Title: Re: Unpack 02 - FSG v2.0
Post by: Arab3h on May 08, 2007, 12:59:09 PM
Prisel jsem na to, jde to uplne primitivne, v ImpRec staci zadat RVA 1000 a size 348 a samozrejme opravit OEP na 739D pak GetImport pak rozbalime nalezene improty a pokazde na hodnote 7FFFFFFF kliknout pravym tlacitkem na Cut Thunks a importy se rozdeli jak maji, pak uz jen FixDump a mame vyhrano. Je to bez jakehokoliv zasahu v olly, krome dumpu
Title: Re: Unpack 02 - FSG v2.0
Post by: llAmElliK on May 08, 2007, 01:45:23 PM
Pouziti CUT Thunk je diskutabilni - tohle se dost casto pouziva kdyz nedojde k automaticke oprave importu - ovsem ne vzdy je to na miste!!!
Postup v impREC by mel byt nasledovny:
....
....
- Get Imports
- Show Invalid (ukazi se spatne importy)
- Trace Level1 (disasm) - mozna oprava
- Pokud ani to nepomuze pouzijeme nejaky plugin daneho packeru
- pak uz zbejva manualni uprava ulozeneho .txt dle vypoctu (nebo   zminovany CUT spatnych importu)

SIZE RVA neni podle mne treba nastavovat zvlast u techto packeru - dulezite je aby hodnota RVA byla alespon 1000 - pokud budete mit nizsi zrejmne se nenactou vsechny knihovny a jejich API.
Title: Re: Unpack 02 - FSG v2.0
Post by: eraser on May 08, 2007, 03:26:00 PM
Video mám hotové, uploadnem ho cez víkend, preto?e z práce sa nedostanem na FTP.   :(

S trochou ručných zásahov som zredukoval unpacknutý súbor presne na 81.413 bajtov. Tro?ku mám obavy s resources, resp. string tables. U mňa to v?ak funguje, tak?e pokiaľ by to z vás niekto otestoval, tak mi dajte vedieť, či je to 100% funkčné. Najmä by som uvítal niekoho s iným OS ne? Windows XP SP2. Av?ak si nie som istý, či sa tam dá normálne spustiť notepad z WinXP.
Title: Re: Unpack 02 - FSG v2.0
Post by: Arab3h on May 08, 2007, 06:23:57 PM
Quote from: llAmElliK
Pouziti CUT Thunk je diskutabilni - tohle se dost casto pouziva kdyz nedojde k automaticke oprave importu - ovsem ne vzdy je to na miste!!!
Ale proc je ten postup spatne??? Vzdyt sem jen odstranil oddelovace, ktere ImpRecu znemoznovali automatickou opravu importu.
Title: Re: Unpack 02 - FSG v2.0
Post by: llAmElliK on May 08, 2007, 06:28:30 PM
Duvod je jednoduchy - takto opravis kazdy import u kazdeho targetu resp jeho IAT - ale je treba vedet zda mas importy vsechny, ktere tam maji byt.Cili nerikam ze to je primarne spatne ale pouzivat az kdyz vse selze a s rozvahou..
Title: Re: Unpack 02 - FSG v2.0
Post by: Master on May 09, 2007, 09:46:58 AM
Tak sem dokoncil muj tutorial na tento packer.Pouzil sem pro nahrani propaganduv InstantDemo,cimz ho odted schvaluji jako moznost pro zaznam.

Code: [Select]

unpackschool.free-site-host.com/UnpackingSchool/FSG_2_0/solutions/Master/FSG2_0rar


Edit: Pridan script pro dump.Pak staci opravit akorat importy.