| 
注册时间2005-7-22
阅读权限20
最后登录1970-1-1UID2466 以武会友  
 
 该用户从未签到 | 
 
| 【调试环境】:WinXP、PEiD、ODbyDYK v1.10、ImportREC1.42 
 【学习目的】:手动脱tElock 0.98 -> tE!壳
 
 【目标软件】:tElock 0.98加壳的win98记事本
 
 【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
 
 ------------------------------------------------------------------------------------------
 
 1.前言
 
 二哥的脱壳进阶教程第2课里早已有关于以tElock 0.98 -> tE!加壳软件的脱壳方法,今天无意在中国共享
 天空(bbs.chinadev.net)看到一种新的脱壳方式,觉得脱法简单易学,对我这个新手来说比较直观简便,也
 比较容易接受和掌握。本文可以说模仿其脱壳方法的一个过程,以此献给像我一样的菜鸟做参考,高手则略
 过。
 
 
 2.脱壳过程
 
 OD载入程序,忽略所有异常,再添加以下几个异常C0000005(ACCESS VIOLATION)、C000001D(ILLEGAL
 INSTRUCTION)、C000001E(INVALID LOCK SEQUENCE)、C0000096(PRIVILEGED INSTRUCTION)
 
 入口代码:
 
 0040DBD6 N>^\E9 25E4FFFF       jmp NOTEPAD.0040C000
 0040DBDB     0000              add byte ptr ds:[eax],al
 0040DBDD     00E8              add al,ch
 0040DBDF     F6EC              imul ah
 0040DBE1     FA                cli
 0040DBE2     1E                push ds
 0040DBE3     DC00              fadd qword ptr ds:[eax]
 0040DBE5     0000              add byte ptr ds:[eax],al
 0040DBE7     0000              add byte ptr ds:[eax],al
 0040DBE9     0000              add byte ptr ds:[eax],al
 0040DBEB     0000              add byte ptr ds:[eax],al
 
 用快捷alt+M 打开内存映射,来到以下的地方:
 
 00400000   00001000   NOTEPAD               PE header          Imag 01001002      R      RWE
 00401000   00004000   NOTEPAD    .text      code               Imag 01001002      R      RWE
 00405000   00001000   NOTEPAD    .data      data               Imag 01001002      R      RWE
 00406000   00001000   NOTEPAD    .idata                        Imag 01001002      R      RWE
 00407000   00005000   NOTEPAD    .rsrc      resources          Imag 01001002      R      RWE
 
 
 在00400000  PEHeader下第一次内存断点,F9运行,shift+F9中断以下代码处:
 
 77F51539     66:8139 4D5A      cmp word ptr ds:[ecx],5A4D-----------中断在这里
 77F5153E     75 1D             jnz short ntdll.77F5155D
 77F51540     8B51 3C           mov edx,dword ptr ds:[ecx+3C]
 77F51543     81FA 00000010     cmp edx,10000000
 77F51549     73 12             jnb short ntdll.77F5155D
 77F5154B     8D040A            lea eax,dword ptr ds:[edx+ecx]
 77F5154E     8945 E4           mov dword ptr ss:[ebp-1C],eax
 77F51551     8138 50450000     cmp dword ptr ds:[eax],4550
 77F51557     0F85 C00F0200     jnz ntdll.77F7251D
 77F5155D     834D FC FF        or dword ptr ss:[ebp-4],FFFFFFFF
 77F51561     E8 E8760200       call ntdll.77F78C4E
 77F51566     C2 0400           retn 4
 
 再次用快捷alt+M 打开内存映射,再次来到以下的地方:
 
 00400000   00001000   NOTEPAD               PE header          Imag 01001002      R      RWE
 00401000   00004000   NOTEPAD    .text      code               Imag 01001002      R      RWE
 00405000   00001000   NOTEPAD    .data      data               Imag 01001002      R      RWE
 00406000   00001000   NOTEPAD    .idata                        Imag 01001002      R      RWE
 00407000   00005000   NOTEPAD    .rsrc      resources          Imag 01001002      R      RWE
 
 
 这次在00401000 code下第二次内存断点,F9运行,shift+F9中断笔记本oep处:
 
 004010CC     55                push ebp----------断在这里
 004010CD     8BEC              mov ebp,esp
 004010CF     83EC 44           sub esp,44
 004010D2     56                push esi
 004010D3     FF15 E4634000     call dword ptr ds:[4063E4]
 004010D9     8BF0              mov esi,eax
 004010DB     8A00              mov al,byte ptr ds:[eax]
 004010DD     3C 22             cmp al,22
 004010DF     75 1B             jnz short NOTEPAD.004010FC
 004010E1     56                push esi
 
 用OD插件直接将其dump出来,运行ImportREC1.42,填入OEP:10cc,"autosearch", 再"get import",
 有无效指针,用level 3 或tElock 0.98插件追踪,发现有4个指针无法修复,将其"cut"掉,然后修复即可。修复后的
 程序可正常运行。
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?加入我们 
  |