windycandy 发表于 2005-10-10 10:36:34

2次内存断点快速脱tElock 0.98壳

【调试环境】: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:,al
0040DBDD   00E8            add al,ch
0040DBDF   F6EC            imul ah
0040DBE1   FA                cli
0040DBE2   1E                push ds
0040DBE3   DC00            fadd qword ptr ds:
0040DBE5   0000            add byte ptr ds:,al
0040DBE7   0000            add byte ptr ds:,al
0040DBE9   0000            add byte ptr ds:,al
0040DBEB   0000            add byte ptr ds:,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


在00400000PEHeader下第一次内存断点,F9运行,shift+F9中断以下代码处:

77F51539   66:8139 4D5A      cmp word ptr ds:,5A4D-----------中断在这里
77F5153E   75 1D             jnz short ntdll.77F5155D
77F51540   8B51 3C         mov edx,dword ptr ds:
77F51543   81FA 00000010   cmp edx,10000000
77F51549   73 12             jnb short ntdll.77F5155D
77F5154B   8D040A            lea eax,dword ptr ds:
77F5154E   8945 E4         mov dword ptr ss:,eax
77F51551   8138 50450000   cmp dword ptr ds:,4550
77F51557   0F85 C00F0200   jnz ntdll.77F7251D
77F5155D   834D FC FF      or dword ptr ss:,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:
004010D9   8BF0            mov esi,eax
004010DB   8A00            mov al,byte ptr ds:
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"掉,然后修复即可。修复后的
程序可正常运行。

Nisy 发表于 2005-10-10 13:01:12

看过了 支持下~

dthexin 发表于 2005-10-19 14:07:15

CorpUlent 发表于 2006-3-17 20:42:16

怎么我就不行呢,我晕,我也是一样的做的啊

rasxy 发表于 2006-3-22 21:01:10

我也是.第一次中断后就跳到了下面,和楼主说的不一样啊
7C930806   66:8139 4D5A      cmp word ptr ds:,5A4D
7C93080B   75 1D                      jnz short ntdll.7C93082A
7C93080D   8B51 3C                  mov edx,dword ptr ds:
7C930810   81FA 00000010       cmp edx,10000000
7C930816   73 12                     jnb short ntdll.7C93082A

chinalvker 发表于 2006-5-8 12:04:16

宫本就看不懂

chadd 发表于 2006-5-8 23:50:54

此附件依照该脱法不完成,我的是在XP2下。

冷血书生 发表于 2006-5-10 09:26:00

第一次: 00407000   00005000   NOTEPAD    .rsrc      resources          Imag 01001002      R      RWE下内存访问断点
第二次: 00401000   00004000   NOTEPAD    .text      code               Imag 01001002      R      RWE   下内存访问断点

这个可以到达OEP,但楼主说的,我也无法到达OEP~~不知道为什么?~

风球 发表于 2006-5-10 15:32:53

呵```老贴都顶上来了```我的两次是这样的
第一次: 00405000   00001000   NOTEPAD    .data      data               Imag 01001002      R      RWE   下内存访问断点

修改MAGIC JUMP 后再
第二次: 00401000   00004000   NOTEPAD    .text      code               Imag 01001002      R      RWE   下内存访问断点

IAT完整,DUMP
------------------------------------
第一次用这个也可以
第一次: 00407000   00005000   NOTEPAD    .rsrc      resources          Imag 01001002      R      RWE下内存访问断点
只是这样得不到完好的IAT,有点怪

野猫III 发表于 2006-5-10 16:11:24

原帖由 风球 于 2006-5-10 15:32 发表
呵```老贴都顶上来了```我的两次是这样的
第一次: 00405000   00001000   NOTEPAD    .data      data               Imag 01001002      R      RWE   下内存访问断点

修改MAGIC JUMP 后再
第二次: 0040100 ...

呵呵,不明白!那位朋友来做个演示更好!
页: [1] 2
查看完整版本: 2次内存断点快速脱tElock 0.98壳