首页
社区
课程
招聘
[求助]不理解OD脱壳跟踪过程中怎样跳过循环的,望高手指点
发表于: 2005-7-26 16:36 6493

[求助]不理解OD脱壳跟踪过程中怎样跳过循环的,望高手指点

2005-7-26 16:36
6493
以下是OD脱壳跟踪过程中常见的一个需要跳过循环的情况:

jle short Notepad.0040D0E1           <------                 (1)
call Notepad.0040D0EC                       |
jb short Notepad.0040D15B                   |    ---------   (2)
movs byte ptr es:[edi],byte ptr ds:[esi]    |             |
xor byte ptr ds:[edi-1],bl                  |             |
dec ebx                                     |             |
jmp short Notepad.0040D138           -------              |  (3)
inc ecx                                                   |  (4)
call Notepad.0040D0EC                                     |   
adc ecx,ecx                                               |
call Notepad.0040D0EC                                     |
jb short Notepad.0040D14C                                 |
retn                                                      |
xor ebp,ebp                                      <--------    (5)

(3)的jmp跳转到(1),构成循环,为了跳出,可以设置使程序直接运行到
(3)的下一条指令(4),大家都这么做,结果经常对。(有时会跟“飞”)
但是我对此很不理解。
从形式上,能跳出次循环的,只有(2)指令,但是它将跳转到(5),根本不是(4)啊,
这是怎么回事呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
像aplib
0040D0E1大概出循环
2005-7-26 17:13
0
雪    币: 237
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
问题是使程序执行到(4)处,跳出循环是正确的,后面脱壳一切正常。
我就是不知道它怎么能执行到(4)的呢?从形式上看这不应该的啊。

望版主再解释。谢谢。
2005-7-26 17:25
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
没地址怎么看啊
2005-7-26 17:51
0
雪    币: 237
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
不好意思哈。脸红ing……
这是 weiyi75[Dfcg]大虾写的教学中的一个例题。我现在怎么找不到出处了。

0040D13B     jle short Notepad.0040D0E1           <------                 (1)
0040D13D     call Notepad.0040D0EC                       |
0040D142     jb short Notepad.0040D15B                   |    ---------   (2)
0040D144     movs byte ptr es:[edi],byte ptr ds:[esi]    |             |
0040D145     xor byte ptr ds:[edi-1],bl                  |             |
0040D148     dec ebx                                     |             |
0040D149     jmp short Notepad.0040D138           -------              |  (3)
0040D14B     inc ecx                                                   |  (4)
0040D14C     call Notepad.0040D0EC                                     |   
0040D151     adc ecx,ecx                                               |
0040D153     call Notepad.0040D0EC                                     |
0040D158     jb short Notepad.0040D14C                                 |
0040D15A     retn                                                      |
0040D15B     xor ebp,ebp                                      <--------    (5)
2005-7-27 10:19
0
雪    币: 237
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
找到了,这个是Petite2.2加壳Win98的记事本

单步跟踪时,事实上,程序确实是从(2)跳到(5)才跳出循环的。
而在(4)处下断点确实也能到达。不知为什么。
2005-7-27 10:49
0
游客
登录 | 注册 方可回帖
返回
//