RE FORUM
[REVERSE ENGINEERING] => Newbie => Topic started by: llAmElliK on May 04, 2007, 09:35:24 PM
-
PACKER - FSG 2.0 by bart
Najdete na danem ftp v adresari FSG - enJOY
-
Díky moc,aspon ze si to nahodil,kdyz uz sme se nemohli porad stretnout.Many thx
-
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.
-
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
-
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.
-
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
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
-
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ť.
-
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.
-
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
-
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
-
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.
-
Zkuste kouknout na tuhle IAT - taghle by mozna mohla vypadat (mozna - jinak plne funkcni unpack)
-
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.
-
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?
-
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.
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
-
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..
-
Tak sem dokoncil muj tutorial na tento packer.Pouzil sem pro nahrani propaganduv InstantDemo,cimz ho odted schvaluji jako moznost pro zaznam.
unpackschool.free-site-host.com/UnpackingSchool/FSG_2_0/solutions/Master/FSG2_0rar
Edit: Pridan script pro dump.Pak staci opravit akorat importy.