首页
论坛
课程
招聘
[原创]ASProtect 2.1x SKE + Delphi + Stolen Code
2005-12-11 10:00 25158

[原创]ASProtect 2.1x SKE + Delphi + Stolen Code

2005-12-11 10:00
25158
--------------------------------------------------------------------------------
【破解作者】 SYSCOM
【使用工具】 Ollydbg1.10, LordPE,ImportREC 1.62 ,PEid 0.94
【破解平台】 Windows XP SP1
【软件名称】 MultiTranse 3.5.8
【下载地址】 Http://www.tialsoft.com/multitranse/
【软件简介】 Online Translation Software
【加壳方式】 ASProtect SKE 2.X
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------

(0) 用 PEid 0.94 ???  ASProtect 2.1x SKE -> Alexey Solodovnikov

(1) 用ollydbg 载入MultiTranse.exe ,按 ALT+O 设置异常 Memory Access Violation。
    按 F9 , ?办生?常中?在位址 00BDB530

00BDB530-- MOV DWORD PTR DS:[EAX],12C5EC7F

(2) 按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3 ,在 00BDA8C5 ,韵硬件??

00BDA8C5--E8 7ACEFFFF     CALL 00BD7744   <= 韵硬件??
00BDA8CA--83C4 2C         ADD  ESP,2C
00BDA8CD--5D              POP  EBP
00BDA8CE--5F              POP  EDI
00BDA8CF--5E              POP  ESI
00BDA8D0--5B              POP  EBX
00BDA8D1--C3              RETN

(3) 按  CTRL+F2 ,重新蒌入 ,按 ALT+O 忽略异常 Memory Access Violation。
    按 F9 , ?办生硬件中?在位址 00BDA8C5 按 F7  STEP 走到 00BD77BE

00BD77BE--RETN                     <==== 返回到 00EA02CD => OEP 檫始
00BD77BF--JMP   SHORT 00BD77C2

00EA02CD--PUSH  EBP                <== OEP Start
00EA02CE--JMP   00EA0C22
00EA02D3--MOV   DWORD PTR DS:[54B718],EAX
00EA02D8--ADD   EAX,EBX

(4) 按 CTRL+B 搜? 89,45,F0,B8,00,07,00,00 修改 00BE7097==>JMP 0054B060

00BE7092--33C0         XOR EAX,EAX
00BE7094--8945 F0      MOV DWORD PTR SS:[EBP-10],EAX
00BE7097--B8 00070000  MOV EAX,700   修改 ==>JMP 0054B060(?得API返回 Patch)

(5) 傥上 Patch Code ,在 0054B000 空白?,CTRL+ Gray* ? EIP=> 0054B000
    ??取出正催  WIN32 API

(6) 第一次,韵 ESI=1 ,F2->中?韵在 0054B05E,按 F9,
    使 5C0000 ???得 IAT (?序)

(6.1) 在 5C0000 ??中,?办?一?,指向 00BEXXXX ,?的 API ,
      那?就是脎藏的 API => GetProcAddress ,修正它

(7) CTRL+ Gray* ? EIP=>0054B0D0 ,F2->中?韵在 0054B0F7,
    按 F9,在 5C0000 ???得 IAT(排序)

(8)COPY->IAT  5C0000 ??, 到文字? IAT.TXT ,利用???篦,例如 WinHex,UEdit32
   ? IAT 中,各 DLL中殓,插入 4 BYTES 00 00 00 00  ?隔,完成後,再傥回 005C0000

(9) 第二次,韵 ESI=2 ,F2->中?韵在 0054B05E,按 F9,使 CODE 重新定位 IAT ADDRESS

(10)Patch 完成後,Full_Dump ,然後?行 ImportREC 令 RVA=1C0000,SIZE= 868
  ->Fix Dump 完成 90% 咄度

修? CODE AND 重建 IAT - Patch Code
========================================================================
0054B000--BE 01000000     MOV ESI,1       ;ESI=1取出API,ESI=2重定位API                 
0054B005--B8 00005C00     MOV EAX,MultiTra.005C0000     ;IAT 檫始位址
0054B00A--A3 F4AF5400     MOV DWORD PTR DS:[54AFF4],EAX
0054B00F--BA 00104000     MOV EDX,MultiTra              ;CODE 檫始位址   
0054B014--803A E8         CMP BYTE PTR DS:[EDX],0E8     ;是否 CALL ??
0054B017--75 19           JNZ SHORT MultiTra.0054B032
0054B019--8B5A 01         MOV EBX,DWORD PTR DS:[EDX+1]
0054B01C--03DA            ADD EBX,EDX
0054B01E--83C3 05         ADD EBX,5                     ;?算正催的 CALL ADDR
0054B021--81FB 0000EA00   CMP EBX,0EA0000               ;是否 ASPR 解瘁位址??
0054B027--75 2C           JNZ SHORT MultiTra.0054B055
0054B029--60              PUSHAD                        ;保存寄存器
0054B02A--8925 F0AF5400   MOV DWORD PTR DS:[54AFF0],ESP ;保存 ESP 值
0054B030--FFE2            JMP EDX                       ;咄入ASPR 解瘁  
0054B032--66:813A FF25    CMP WORD PTR DS:[EDX],25FF    ;是否 JMP [XX]?
0054B037--75 1C           JNZ SHORT MultiTra.0054B055   
0054B039--8B5A 02         MOV EBX,DWORD PTR DS:[EDX+2]
0054B03C--81FB 08D25400   CMP EBX,MultiTra.0054D208     ;是否在原?IAT位址惯?
0054B042--72 11           JB  SHORT MultiTra.0054B055   ;小於 54D208?
0054B044--81FB 08E25400   CMP EBX,MultiTra.0054E208     
0054B04A--77 09           JA  SHORT MultiTra.0054B055   ;大於 54E208?
0054B04C--8B1B            MOV EBX,DWORD PTR DS:[EBX]
0054B04E--83FE 01         CMP ESI,1                     ;ESI=1??
0054B051--74 26           JE  SHORT MultiTra.0054B079
0054B053--EB 4B           JMP SHORT MultiTra.0054B0A0
0054B055--42              INC EDX                       ;??器 +1
0054B056--81FA 00505400   CMP EDX,MultiTra.00545000
0054B05C--72 B6           JB  SHORT MultiTra.0054B014   ;CODE 段劫束?
0054B05E--EB FE           JMP SHORT MultiTra.0054B05E   ;Patch 劫束 中??
0054B060--90              NOP                           ;<=取得 API 返回?
0054B061--8BDA            MOV EBX,EDX
0054B063--891D F8AF5400   MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
0054B069--8B25 F0AF5400   MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
0054B06F--61              POPAD                         ;?原寄存器
0054B070--8B1D F8AF5400   MOV EBX,DWORD PTR DS:[54AFF8] ;取出 API
0054B076--EB D6           JMP SHORT MultiTra.0054B04E
0054B078--90              NOP
0054B079--8B0D F4AF5400   MOV ECX,DWORD PTR DS:[54AFF4]
0054B07F--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B084--3918            CMP DWORD PTR DS:[EAX],EBX
0054B086--74 CD           JE  SHORT MultiTra.0054B055  ;是否重妖??
0054B088--05 04000000     ADD EAX,4
0054B08D--3BC1            CMP EAX,ECX
0054B08F--72 F3           JB  SHORT MultiTra.0054B084
0054B091--8919            MOV DWORD PTR DS:[ECX],EBX   ;保存 API
0054B093--8305 F4AF5400 04ADD DWORD PTR DS:[54AFF4],4  ;指到下? API ADDR
0054B09A--EB B9           JMP SHORT MultiTra.0054B055
0054B09C--90              NOP
0054B09D--90              NOP
0054B09E--90              NOP
0054B09F--90              NOP
0054B0A0--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B0A5--3918            CMP DWORD PTR DS:[EAX],EBX
0054B0A7--74 0E           JE  SHORT MultiTra.0054B0B7  ;是否找到??
0054B0A9--05 04000000     ADD EAX,4
0054B0AE--3D 6C085C00     CMP EAX,MultiTra.005C086C    ;IAT 劫束位址?
0054B0B3--72 F0           JB  SHORT MultiTra.0054B0A5  
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5   
0054B0B7--66:C702 FF25    MOV WORD PTR DS:[EDX],25FF   ;修正? JMP
0054B0BC--2D 00005C00     SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00     ADD EAX,5C1000               ;修正 OFFSET
0054B0C6--8942 02         MOV DWORD PTR DS:[EDX+2],EAX ;重定位 ADDR   
0054B0C9--EB 8A           JMP SHORT MultiTra.0054B055
0054B0CB--90              NOP
0054B0CC--90              NOP
0054B0CD--90              NOP
0054B0CE--90              NOP
0054B0CF--90              NOP                          ;排序 API
0054B0D0--B9 2C085C00     MOV ECX,MultiTra.005C082C    ;IAT 劫束位址
0054B0D5--BE 00005C00     MOV ESI,MultiTra.005C0000    ;IAT 檫始位址
0054B0DA--8BFE            MOV EDI,ESI
0054B0DC--8B06            MOV EAX,DWORD PTR DS:[ESI]
0054B0DE--8B1F            MOV EBX,DWORD PTR DS:[EDI]
0054B0E0--3BC3            CMP EAX,EBX
0054B0E2--76 05           JBE SHORT MultiTra.0054B0E9   
0054B0E4--93              XCHG EAX,EBX                  ;如果大於?互?  
0054B0E5--8906            MOV DWORD PTR DS:[ESI],EAX
0054B0E7--891F            MOV DWORD PTR DS:[EDI],EBX
0054B0E9--83C7 04         ADD EDI,4
0054B0EC--3BF9            CMP EDI,ECX
0054B0EE--76 EC           JBE SHORT MultiTra.0054B0DC   ;LOOP X1  
0054B0F0--83C6 04         ADD ESI,4
0054B0F3--3BF1            CMP ESI,ECX
0054B0F5--76 E3           JBE SHORT MultiTra.0054B0DA   ;LOOP X2
0054B0F7--EB FE           JMP SHORT MultiTra.0054B0F7   ;排序劫束
========================================================================

(11) ?行 LordPE ,啉定 MultiTranse.exe 按右 key Mouse,
     啉 dump region 取出 Stolen Code ?段,忽略?用模? API VM,
     取出必?的 M1-M3 Stolen Code VM ?段 ,及 OEP ?段

VM Address          Size
===========================
00BC0000           33000    <-ASProtect 解密 CODE ?段
00C40000            4000    <-ASProtect 儋料 DATA ?段
00EA0000            3000    <-OEP  Stolen Code
00F00000            1000    <-M1   Stolen Code
00F10000            1000    <-M1   Stolen Code
00F20000            1000    <-M2   Stolen Code
00F30000            1000    <-M2   Stolen Code
00F40000            1000    <-M2   Stolen Code  
00F50000            1000    <-M3   Stolen Code
00F60000            1000    <-M3   Stolen Code   
===========================

全部抓出?後,再用  LordPE ,附加在 DUMP ?尾,?修正 PE Header

(12) 修正 4 ?,盍先解瘁的 API (注意:不是每?ASProtect,都?盍先解瘁)
     如果?遇到,可以跳咿呃修正..

00401384--JMP  DWORD PTR DS:[kernel32.GetModuleFileNameA]
00406F50--JMP  DWORD PTR DS:[ADVAPI32.RegCloseKey]
00406F58--JMP  DWORD PTR DS:[ADVAPI32.RegCreateKeyExA]
00406F98--JMP  DWORD PTR DS:[ADVAPI32.RegQueryValueExA]

(13)修正 Route Check

修正前....
00BE8542--MOV  EAX,DWORD PTR DS:[EAX+34]   
00BE8545--CALL EAX                                                   
00BE8547--SUB  DWORD PTR SS:[EBP+C],EAX

修正後
00BE8542--NOP
00BE8543--NOP
00BE8544--MOV EAX,DWORD PTR SS:[ESP+58]
00BE8548--SUB EAX,5

(14) 檫始  RUN ,跨平台 TEST ~OK~!!!!!

PS.(1)只要是 ASProtect 2.1x SKE + Delphi (有/? Stolen Code 都可)
   都可唔用,此 PATCH ....(改一下位址,即可套用)
   如果是 VC ++ 程序,?找我以前办的一篇文章,套用 PATCH,即可

   (2)那些分滕的 Stolen Code,基本上你?殓多,都可以,?原回去的
      相晷的文章,可以?考 loveboom 兄,所?的   ASProtect 系列  
  
  
      新手??,如有邋锗,?望高手不吝指正....

附件:mt358.part1.rar

附件:mt358.part2.rar

附件:patch_code.zip  

恭喜ID[飞翔的猫咪]获看雪安卓应用安全能力认证高级安全工程师!!

收藏
点赞0
打赏
分享
最新回复 (52)
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
kyc 活跃值 19 2005-12-11 10:18
2
0
支持,学习一下.
雪    币: 206
活跃值: 活跃值 (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸡蛋壳 活跃值 2005-12-11 11:26
3
0
【破解作者】 SYSCOM
【使用工具】 Ollydbg1.10, LordPE,ImportREC 1.62 ,PEid 0.94
【破解平台】 Windows XP SP1
【软件名称】 MultiTranse 3.5.8
【下载地址】 Http://www.tialsoft.com/multitranse/
【软件简介】 Online Translation Software
【加壳方式】 ASProtect SKE 2.X
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家共享:)
--------------------------------------------------------------------------------

(0) 用 PEid 0.94 检测为  ASProtect 2.1x SKE -> Alexey Solodovnikov

(1) 用ollydbg 加载MultiTranse.exe ,按 ALT+O 设置异常 Memory Access Violation。
      按 F9 , 会发生异常中断在地址 00BDB530

00BDB530-- MOV DWORD PTR DS:[EAX],12C5EC7F

(2) 按 CTRL+B 搜索 83,C4,2C,5D,5F,5E,5B,C3 ,在 00BDA8C5 ,设硬件断点

00BDA8C5--E8 7ACEFFFF     CALL 00BD7744   <= 设硬件断点
00BDA8CA--83C4 2C         ADD  ESP,2C
00BDA8CD--5D              POP  EBP
00BDA8CE--5F              POP  EDI
00BDA8CF--5E              POP  ESI
00BDA8D0--5B              POP  EBX
00BDA8D1--C3              RETN

(3) 按  CTRL+F2 ,重新加载 ,按 ALT+O 忽略异常 Memory Access Violation。
      按 F9 , 会发生硬件中断在地址 00BDA8C5 按 F7  STEP 走到 00BD77BE

00BD77BE--RETN                     <==== 返回到 00EA02CD => OEP 开始
00BD77BF--JMP   SHORT 00BD77C2

00EA02CD--PUSH  EBP                <== OEP Start
00EA02CE--JMP   00EA0C22
00EA02D3--MOV   DWORD PTR DS:[54B718],EAX
00EA02D8--ADD   EAX,EBX

(4) 按 CTRL+B 搜索 89,45,F0,B8,00,07,00,00 修改 00BE7097==>JMP 0054B060

00BE7092--33C0         XOR EAX,EAX
00BE7094--8945 F0      MOV DWORD PTR SS:[EBP-10],EAX
00BE7097--B8 00070000  MOV EAX,700   修改 ==>JMP  0054B060 (获得API返回 Patch)

(5) 粘贴 Patch Code ,在 0054B000 空白区,CTRL+ Gray* 将 EIP=> 0054B000
     准备取出正确  WIN32 API

(6) 第一次,设 ESI=1 ,F2->中断设在 0054B05E,按 F9,使 5C0000 区块获得 IAT (乱序)

(7) CTRL+ Gray* 将 EIP=>0054B0D0 ,F2->中断设在 0054B0F7,按 F9,在 5C0000 区块获得 IAT(排序)

(8)COPY->IAT  5C0000 区块, 到文本文件 IAT.TXT ,利用编辑软件,例如 WinHex,UEdit32
     将 IAT 中,各 DLL 中间,插入  00 00 00 00   区隔 ,完成后,再贴回 005C0000

(9) 第二次,设 ESI=2 ,F2->中断设在 0054B05E,按 F9,使 CODE 重新定位 IAT ADDRESS

(10)Patch 完成后,Full_Dump ,然后运行 ImportREC 令 RVA=1C0000,SIZE= 868
  ->Fix Dump 完成 90% 进度

API- Patch Code
========================================================================
0054B000--BE 01000000     MOV ESI,1  ;ESI=1 取出API ,ESI=2 重新定位 API                 
0054B005--B8 00005C00     MOV EAX,MultiTra.005C0000 ;IAT 开始地址
0054B00A--A3 F4AF5400     MOV DWORD PTR DS:[54AFF4],EAX
0054B00F--BA 00104000     MOV EDX,MultiTra            ;CODE 开始地址   
0054B014--803A E8         CMP BYTE PTR DS:[EDX],0E8   ;是否 CALL ??
0054B017--75 19           JNZ SHORT MultiTra.0054B032
0054B019--8B5A 01         MOV EBX,DWORD PTR DS:[EDX+1]
0054B01C--03DA            ADD EBX,EDX
0054B01E--83C3 05         ADD EBX,5
0054B021--81FB 0000EA00   CMP EBX,0EA0000              ;是否 ASPR 解码地址??
0054B027--75 2C           JNZ SHORT MultiTra.0054B055
0054B029--60              PUSHAD
0054B02A--8925 F0AF5400   MOV DWORD PTR DS:[54AFF0],ESP
0054B030--FFE2            JMP EDX                      ;入ASPR 解码  
0054B032--66:813A FF25    CMP WORD PTR DS:[EDX],25FF   ;是否 JMP [XX]?
0054B037--75 1C           JNZ SHORT MultiTra.0054B055   
0054B039--8B5A 02         MOV EBX,DWORD PTR DS:[EDX+2]
0054B03C--81FB 08D25400   CMP EBX,MultiTra.0054D208    ;是否在 IAT 地址惯围
0054B042--72 11           JB  SHORT MultiTra.0054B055
0054B044--81FB 08E25400   CMP EBX,MultiTra.0054E208
0054B04A--77 09           JA  SHORT MultiTra.0054B055
0054B04C--8B1B            MOV EBX,DWORD PTR DS:[EBX]
0054B04E--83FE 01         CMP ESI,1                     ;ESI=1??
0054B051--74 26           JE  SHORT MultiTra.0054B079
0054B053--EB 4B           JMP SHORT MultiTra.0054B0A0
0054B055--42              INC EDX                       ;计数器 +1
0054B056--81FA 00505400   CMP EDX,MultiTra.00545000
0054B05C--72 B6           JB  SHORT MultiTra.0054B014   ;CODE 段退出?
0054B05E--EB FE           JMP SHORT MultiTra.0054B05E
0054B060--90              NOP                         ;<=取得 API 返回点
0054B061--8BDA            MOV EBX,EDX
0054B063--891D F8AF5400   MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
0054B069--8B25 F0AF5400   MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
0054B06F--61              POPAD                         ;还原寄存器
0054B070--8B1D F8AF5400   MOV EBX,DWORD PTR DS:[54AFF8] ;取出 API
0054B076--EB D6           JMP SHORT MultiTra.0054B04E
0054B078--90              NOP
0054B079--8B0D F4AF5400   MOV ECX,DWORD PTR DS:[54AFF4]
0054B07F--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 开始地址
0054B084--3918            CMP DWORD PTR DS:[EAX],EBX
0054B086--74 CD           JE  SHORT MultiTra.0054B055  ;是否重复??
0054B088--05 04000000     ADD EAX,4
0054B08D--3BC1            CMP EAX,ECX
0054B08F--72 F3           JB  SHORT MultiTra.0054B084
0054B091--8919            MOV DWORD PTR DS:[ECX],EBX   ;保存 API
0054B093--8305 F4AF5400 04ADD DWORD PTR DS:[54AFF4],4  ;指到下个 API ADDR
0054B09A--EB B9           JMP SHORT MultiTra.0054B055
0054B09C--90              NOP
0054B09D--90              NOP
0054B09E--90              NOP
0054B09F--90              NOP
0054B0A0--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 开始地址
0054B0A5--3918            CMP DWORD PTR DS:[EAX],EBX
0054B0A7--74 0E           JE  SHORT MultiTra.0054B0B7  ;是否找到??
0054B0A9--05 04000000     ADD EAX,4
0054B0AE--3D 6C085C00     CMP EAX,MultiTra.005C086C    ;IAT 退出地址?
0054B0B3--72 F0           JB  SHORT MultiTra.0054B0A5  
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5   
0054B0B7--66:C702 FF25    MOV WORD PTR DS:[EDX],25FF   ;修正为 JMP
0054B0BC--2D 00005C00     SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00     ADD EAX,5C1000               ;修正 OFFSET
0054B0C6--8942 02         MOV DWORD PTR DS:[EDX+2],EAX ;修正 ADDR   
0054B0C9--EB 8A           JMP SHORT MultiTra.0054B055
0054B0CB--90              NOP
0054B0CC--90              NOP
0054B0CD--90              NOP
0054B0CE--90              NOP
0054B0CF--90              NOP                          ;排序 API
0054B0D0--B9 2C085C00     MOV ECX,MultiTra.005C082C    ;IAT 退出地址
0054B0D5--BE 00005C00     MOV ESI,MultiTra.005C0000   
0054B0DA--8BFE            MOV EDI,ESI
0054B0DC--8B06            MOV EAX,DWORD PTR DS:[ESI]
0054B0DE--8B1F            MOV EBX,DWORD PTR DS:[EDI]
0054B0E0--3BC3            CMP EAX,EBX
0054B0E2--76 05           JBE SHORT MultiTra.0054B0E9   
0054B0E4--93              XCHG EAX,EBX                  ;如果大于则互换  
0054B0E5--8906            MOV DWORD PTR DS:[ESI],EAX
0054B0E7--891F            MOV DWORD PTR DS:[EDI],EBX
0054B0E9--83C7 04         ADD EDI,4
0054B0EC--3BF9            CMP EDI,ECX
0054B0EE--76 EC           JBE SHORT MultiTra.0054B0DC   ;LOOP X1  
0054B0F0--83C6 04         ADD ESI,4
0054B0F3--3BF1            CMP ESI,ECX
0054B0F5--76 E3           JBE SHORT MultiTra.0054B0DA   ;LOOP X2
0054B0F7--EB FE           JMP SHORT MultiTra.0054B0F7   ;排序退出
========================================================================

(11) 运行 LordPE ,选择MultiTranse.exe 按右 key Mouse,选 dump region 取出 Stolen Code 区段
    忽略无用模拟 API VM,取出必须的 VM 区段

VM Address          Size
===========================
00BC0000          330000
00C40000            4000
00EA0000            3000
00F00000            1000
00F10000            1000
00F20000            1000
00F30000            1000
00F40000            1000
00F50000            1000
00F60000            1000
===========================

全部抓出来后,再用  LordPE ,附加在 DUMP 文件尾,并修正 PE Header

(12) 修正 4 个,预先解码的 API (注意:不是每个ASProtect,都会预先解码)

00401384-- JMP  DWORD PTR DS:[kernel32.GetModuleFileNameA]
00406F50-- JMP  DWORD PTR DS:[ADVAPI32.RegCloseKey]
00406F58-- JMP  DWORD PTR DS:[ADVAPI32.RegCreateKeyExA]
00406F98-- JMP  DWORD PTR DS:[ADVAPI32.RegQueryValueExA]

(13)修正 Route Check

修正前....
00BE8542--MOV  EAX,DWORD PTR DS:[EAX+34]   
00BE8545--CALL EAX                                                   
00BE8547--SUB  DWORD PTR SS:[EBP+C],EAX

修正后
00BE8542--NOP
00BE8543--NOP
00BE8544--MOV EAX,DWORD PTR SS:[ESP+58]
00BE8548--SUB EAX,5

(14) 开始  RUN ,跨平台 TEST ~OK~!!!!!

数据整理中.......
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
skyege 活跃值 2 2005-12-11 13:46
4
0
好文!!!!!
不晓得鸡蛋壳是何意?
雪    币: 19
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 活跃值 4 2005-12-11 13:51
5
0
雪    币: 221
活跃值: 活跃值 (15)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
mirrormask 活跃值 3 2005-12-13 09:43
6
0
又学到了,多谢:)
雪    币: 231
活跃值: 活跃值 (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2005-12-13 15:13
7
0
按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3

为什么?希望写清楚!
多谢
雪    币: 203
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
syscom 活跃值 6 2005-12-13 15:19
8
0
最初由 liuyilin 发布
按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3

为什么?希望写清楚!
多谢


ASProtect 2.1x SKE -> 找 OEP->CALL 特徵瘁 (通用)
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
南蛮妈妈 活跃值 3 2005-12-13 16:09
9
0
最初由 syscom 发布



ASProtect 2.1x SKE -> 找 OEP->CALL 特徵瘁 (通用)


关于这个通用方法
南蛮妈妈不得要领
请指教
附件:test.rar
雪    币: 231
活跃值: 活跃值 (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2005-12-13 16:40
10
0
最初由 syscom 发布



ASProtect 2.1x SKE -> 找 OEP->CALL 特徵瘁 (通用)

谢谢回答:
你说的没错,我是想问你是如何总结出这个特征吗的?肯定有一个过程,如果能够写入文章我想才是最大的帮助。
我学习了你的N篇文章,确实很简练,有时看完后总有一种不知为什么的感觉!
不好意思,因为本人菜,非常感谢你
雪    币: 179
活跃值: 活跃值 (556)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
freecat 活跃值 1 2005-12-13 16:45
11
0
南蛮妈妈的test.exe
00DEFBF5    E8 1A30FDFF                 CALL 00DC2C14
00DEFBFA    E8 B5D0FFFF                 CALL 00DECCB4
00DEFBFF    83C4 2C                     ADD ESP, 2C
00DEFC02    5D                          POP EBP
00DEFC03    5F                          POP EDI
00DEFC04    5E                          POP ESI
00DEFC05    5B                          POP EBX
00DEFC06    C3                          RETN
在 00defbfa下硬件断点后按f9程序就运行起来了
雪    币: 146
活跃值: 活跃值 (438)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
csjwaman 活跃值 24 2005-12-13 21:07
12
0
最初由 freecat 发布
南蛮妈妈的test.exe
00DEFBF5 E8 1A30FDFF CALL 00DC2C14
00DEFBFA E8 B5D0FFFF CALL 00DECCB4
00DEFBFF 83C4 2C ADD ESP, 2C
00DEFC02 5D POP EBP
........


直接用F2下断。
雪    币: 203
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
syscom 活跃值 6 2005-12-14 02:22
13
0
最初由 csjwaman 发布


直接用F2下断。


TEST.EXE 有 Anti BreakPoint 不可以下 INT 3 ...
雪    币: 146
活跃值: 活跃值 (438)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
csjwaman 活跃值 24 2005-12-14 08:47
14
0
最初由 syscom 发布


TEST.EXE 有 Anti BreakPoint 不可以下 INT 3 ...


我这儿可以正常断下:)当然断下后要及时删除。
雪    币: 228
活跃值: 活跃值 (228)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
steak 活跃值 2 2005-12-18 04:11
15
0
Memory Access Violation
这个异常代号是那个.找死人啊那么多
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwddd 活跃值 2005-12-21 17:54
16
0
还没有试出来。

不过发现


(9) 第二次,设 ESI=2 ,F2->中断设在 0054B05E,按 F9,使 CODE 重新定位 IAT ADDRESS

会停在这句上,因为GetProcAddress已经修正,在重新定位时候已经找不到了,
要手工改。

0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5

另外, 这句中的“0EA0000” 地址有变化。
0054B021--81FB 0000EA00 CMP EBX,0EA0000 ;是否 ASPR 解码地址??
雪    币: 182
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hotice 活跃值 2005-12-22 14:29
17
0
不懂,

通用码是如何找出来的????
雪    币: 203
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
syscom 活跃值 6 2005-12-22 17:36
18
0
最初由 wwwddd 发布
还没有试出来。


不过发现

........


(1)你可以在,傥回,已修正的 IAT 後,? GetProcAddress ,再改回原?的
   加密位址,就不?停在那行了...

(2)ASPR 解密位址 00EA0000 本?就?有,固定,....

呃? PATCH ,腠然??,可是通用性?大....(各肺 Delphi API 加密通用)

?不?活用,就看各人,钌悟了.......

  
雪    币: 203
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
syscom 活跃值 6 2005-12-22 17:44
19
0
最初由 hotice 发布
不懂,

通用码是如何找出来的????


呃肺?有技戌性方法,不知道如何真...

  ?你,TRACE-> ASPR 的?,看咿 1X ?後,自然就?办?,通用码了.....
雪    币: 197
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
CHUNNAN 活跃值 2005-12-23 09:59
20
0
大大您好:
?什?我做到下列呃步笈的?候,OLLYDBG真找不到?目呢?
是不是我哪彦?韵定好呢?

(4) 按 CTRL+B 搜? 89,45,F0,B8,00,07,00,00
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwddd 活跃值 2005-12-25 00:45
21
0
最初由 CHUNNAN 发布
大大您好:
?什?我做到下列呃步笈的?候,OLLYDBG真找不到?目呢?
是不是我哪彦?韵定好呢?

(4) 按 CTRL+B 搜? 89,45,F0,B8,00,07,00,00


你在run到这一行(00BD77BE)的时候搜索:

00BD77BE--RETN                     <==== 返回到 00EA02CD => OEP 檫始
雪    币: 71
活跃值: 活跃值 (48)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
loveboom 活跃值 53 2005-12-28 18:25
22
0
关于找特征码,我以前有文章写过了asprotect 1.3x-2.x的,总结一下就是最后一次异常后找离异常最近处的Add esp,2c,pop ebp,找到那位置后,在上一行call address处下断,断下来后,执行到返回(ctrl+f9),如果壳抽了入口代码那当前eip就是stolen code的开始处,如果eip的代码为call address,那么表示多数这种情况是没有抽程序入口代码的,解压代码后jmp eax 就是跳去原oep处。
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
okdodo 活跃值 2 2005-12-29 00:12
23
0
最初由 loveboom 发布
关于找特征码,我以前有文章写过了asprotect 1.3x-2.x的,总结一下就是最后一次异常后找离异常最近处的Add esp,2c,pop ebp,找到那位置后,在上一行call address处下断,断下来后,执行到返回(ctrl+f9),如果壳抽了入口代码那当前eip就是stolen code的开始处,如果eip的代码为call address,那么表示多数这种情况是没有抽程序入口代码的,解压代码后jmp eax 就是跳去原oep处。


测试多个ASPR加壳程序都有效

不过直接在call address处下断有些程序会直接运行了

我都是在SEH句柄处先F2下断 SHIFT+F9中断后取消断点
然后在call address处下断才行(windows xp sp2环境)。
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwddd 活跃值 2006-1-5 23:59
24
0
最初由 okdodo 发布



测试多个ASPR加壳程序都有效

不过直接在call address处下断有些程序会直接运行了

我都是在SEH句柄处先F2下断 SHIFT+F9中断后取消断点
然后在call address处下断才行(windows xp sp2环境)。

........


我也遇到类似的,直接下断失效,需要在最后一次异常时候像你说的这样操作。
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwddd 活跃值 2006-1-6 00:07
25
0
在昨天试出来了,我照着SYSCOM的所说步骤,一步步做下来,反复了几次也把壳脱了,发现之前修复版本运行不正常是因为full dump后有些多余的块没有去掉,里面的数据没有清除,导致脱壳后运行错误。

解决方法:或删除   或清零  。暂时在使用中没有发现问题。

所遇到的不同处:

1) IAT 里面没有 ADVAPI32.RegCreateKeyExA ,
如果遇到“(12) 修正 4 ?,盍先解瘁的 API ”问题,那需要另外在iat里添加。

2)我使用ImportREC 修复IAT,发现不需要修正offset. 所以下面这2句可免。
0054B0BC--2D 00005C00     SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00     ADD EAX,5C1000               ;修正 OFFSET
游客
登录 | 注册 方可回帖
返回