Автор: Dim_cR -> dim_cr@mail.bg


Програма: Liatro Binary Explorer 1.0 URL: http://www.liatro.com/ Свалена на: 23.10.2003
Размер: 530Kb
Език: VC++6.0 Защита: ASProtect 1.2
Цел: Разопаковане+crack
Инструменти: SoftICE 4.05 + IceDUMP
PEditor 1.7 by Y0da LordPe by Yoda PEiD 0.9
ImpREC 1.3+plugins Revirgin

  • Въведение

    ASProtect като протектор се ползва според мен в 90% от защитените с този вид защита програми. Срещал съм много обиди към този вид защита - лесно се преодолявала. Не е така. Лесното преодоляване се дължи на голямото количество цели и на многото напреднали кракери, които се занимават с преодоляването и. Тук е мястото да посоча руснаците - Hex, Dr.Golova, Wersion. Първият е направил за иследването на механизма на разопаковане, на защитите, които Солодовников променя по малко във всяка нова версия, на цялостния механизъм на разопаковане и възстановяване на работещото exe толкова много, че не мога да спестя моите благодарности към труда му. Да се върна малко по-горе - тези напреднали кракери и програмисти проправят пътя, по който след това се движи масата. Аз съм от нея. Възползвал съм се от изследванията на Hex, за да намеря най-оптималния за мен начин. Е по-надолу ще го споделя и с Вас. Но все пак не забравяйте - ASProtect не е елементарен за преодоляване.

  ОК да започваме.

  1.Възползвайте се от интегрирането на LordPE в контекстното меню на WinExplorer 
и Break'n'Enter като не забравите да сложите bpint3 в SIce 

EAX=00401000   EBX=00000000   ECX=817DBFA4   EDX=817DBFE4   ESI=817DBF84  
EDI=00000000 EBP=006FFF78 ESP=006FFE3C EIP=00401000 O d I S z a P c


017F:00400FFE FFFF INVALID
017F:00401000 CC INT 3 ->тук сработва bpint3
017F:00401001 01404B ADD [EAX+4B],EAX
017F:00401004 00C3 ADD BL,AL
017F:00401006 A28034467A MOV [7A463480],AL
017F:0040100B 7921 JNS 0040102E
017F:0040100D 8860E6 MOV [EAX-1A],AH
------------------------------------BEXPLOR+0FFE--------------------------------
[LordPE]
Type "eb eip 68" ! -> подсказка на LordPE как да върнем ориг.код Break due to BPINT 03 (ET=6.45 seconds) Запишете си стойноста на ESP веднага след сработването на bpint
  2.Отворете програмата в Peditor или LordPE и си запишете:
ImageBase    : 400000
Size of Image:  C4000
  3.Наммиране на OEP и сваляне на dump.
  3.1.Поставете 
      bpx MapViewOfFile
      и стартирайте програмата

017F:0084EDEB  E82456FFFF          CALL      KERNEL32!MapViewOfFile ->(1)
017F:0084EDF0 8BD8 MOV EBX,EAX
017F:0084EDF2 8B533C MOV EDX,[EBX+3C]
017F:0084EDF5 E83A000000 CALL 0084EE34
017F:0084EDFA 6803EE8400 PUSH 0084EE03
017F:0084EDFF FF0424 INC DWORD PTR [ESP]
017F:0084EE02 C3 RET

breakpoint-a сработва bc * 3.2.Поставете bpx GetProcaddress -> F5 017F:0084F126 E8C952FFFF CALL KERNEL32!GetProcAddress
017F:0084F12B 8945F8 MOV [EBP-08],EAX
017F:0084F12E 837DF800 CMP DWORD PTR [EBP-08],00
017F:0084F132 0F8502010000 JNZ 0084F23A
017F:0084F138 F7450C0000FFFF TEST DWORD PTR [EBP+0C],FFFF0000
................. bc * 3.3.Поставете bpr esp-4 esp+4 където esp е адреса който записахме в точка 1 -> F5 чакаме повечко време(при мен около 30 сек) и попадаме в: 017F:00868B13 03C3 ADD EAX,EBX
017F:00868B15 8944241C MOV [ESP+1C],EAX -> OEP
017F:00868B19 61 POPAD
017F:00868B1A FFE0 JMP EAX -> jmp to OEP
017F:00868B1C 00F8 ADD AL,BH
записвайте си моментално стойноста в EAX. Това е така дълго чаканата OEP. 3.4.Dump Аз предпочитам да си правя dump с помощта на IceDump /dump 400000 C4000 d:\dump.exe IB SI но същият резултат може да се постигне ако се зацикли програмата на jmp eax като стане jmp EIP и свалите dump с LordPE или PEditor и след това не забравяте да 'килнете' процеса.
  4.Възстановаване на Import Table 
     Първо нека оправим EntryPoint на dump.exe на 39B8C с помоща на LordPE.
     Идва време да се възползваме и от последните два инструмента ImpRec и Revirgin.
Стартирайте защитеното exe -> bexplor.exe. В менюто с процесите на ImpRec го изберете.
Настрйте OEP да бъде 39B8C и натиснете IAT AutoSearch. След това GetImports.
ImpRec възстанови доста API-ta но и много останаха неразпознати. Натиснете Show Invalid.
Маркират се доста неразпознати. Премахнете цялата последна Fthunk. Тя е пълна с боклук.
С помощта на контексното меню -> Trace Level1 остават само 62
неразпознати. Такааа. Пак от контексното меню избираме PluginTracer(AsProtect).След него
остават само 6 неразпознати. -> Show Invalid.
  Добре идва реда и на Revirgin:
Избираме пак нашето exe от списъка с процесите. OEP=439b8c (обърнете внимание) -> Feth IAT
-> IAT Resolver -> Resolve Again 
Остава само една неразпозната функция но нея я е разпознал ImpRec. Вземаме резултатите от
Revirgin и оправяме неразпознатите в ImpRec функции. Fix Dump и ето имаме си работещо exe.
      Това е :)
      За да оправим програмата остава само едно
      да сменим на $211B8  -> E823D3FFFF с B801000000 

Има още много да се пише по темата за разопаковането. В настоящата статия аз показах един практичен начин за разопаковане. По ентусиазираните могат да изчистят от exe-то двете последни секции, които са остатък от протектора но внимавайте, в първата се съдържат ресурси. Трябва да ги преместите от там.

Искам да изкажа още веднъж благодарностите си на Hex. Посещавайте неговия сайт xtin.km.ru за да сте в крак с новостите при протекторите. Той отделя доста време за да трасира кода и да следи промените в защитите. На нас остава удоволствието да се възползваме от споделения труд и да не забравяме да му благодарим за това( а на Солодовников и на много други да им прилошава :)) ).

Бих искал да припомня на Shade и Stan4oo обещанието им. Очаквам статията за новите версии на ASProtect. Но не бързам - Солодовников е сътворил доста гадорийки :)). Но Hex не изостава :). Успех и на двамата ;P