首页
社区
课程
招聘
调试的时候碰到这种情况怎么处理...
发表于: 2005-4-21 14:41 5280

调试的时候碰到这种情况怎么处理...

2005-4-21 14:41
5280
用od调试进程.找到这段代码...

006ECEA3       8B45 FC        mov eax,dword ptr ss:[ebp-4]
006ECEA6       83E0 1F        and eax,1F
006ECEA9       33C9           xor ecx,ecx

注意看.006ECEA3处指令占3字节.然后下一个指令是006ECEA6

然后按了一下代码窗口的下拉箭头.想向下阅览.结果代码窗口变成

006ECEA4       45             inc ebp
006ECEA5       FC             cld
006ECEA6       83E0 1F        and eax,1F
006ECEA9       33C9           xor ecx,ecx

od把
006ECEA3       8B45 FC        mov eax,dword ptr ss:[ebp-4]
中的45和FC单独写成了一行指令.

问:这种情况应该怎么处理....

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
程序带壳?
2005-4-21 14:44
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 baby2008 发布
程序带壳?


无壳..
2005-4-21 14:44
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
这种情况一般不是程序带有花指令,就是OPCODE代合起来可以成为一句汇编,分开又可以成为另一句汇编,令OD实时反汇编将代码(OPCODE代码)开始地址计算出错导致反汇编错了的原因。其实花指令就利用这个方法迷惑反汇编器的。
2005-4-21 14:53
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 小虾 发布
这种情况一般不是程序带有花指令,就是OPCODE代合起来可以成为一句汇编,分开又可以成为另一句汇编,令OD实时反汇编将代码(OPCODE代码)开始地址计算出错导致反汇编错了的原因。其实花指令就利用这个方法迷惑反汇编器的。


怎么解决呢???
2005-4-21 14:54
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
你也可以试试在OD中按着Ctrl键时再按↑或↓键看看OD的窗口变有什么变化你就明白了。
2005-4-21 14:56
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 小虾 发布
你也可以试试在OD中按着Ctrl键时再按↑或↓键看看OD的窗口变有什么变化你就明白了。


没什么变化嘛...怎么处理这种情况呢.调试很不方便啊...
2005-4-21 15:18
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
手动把某些字节直接改为90,就能看到正确指令。看完后再恢复
2005-4-21 15:20
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 鸡蛋壳 发布
手动把某些字节直接改为90,就能看到正确指令。看完后再恢复

很遗憾.试过了.如果改成90的话.那么正确指令的相应位置也变成90,立刻出错.
2005-4-21 15:52
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我是个菜鸟,我觉得是花指令在作怪,用系统级的调试工具,动态跟踪一下,或许可以找到答案
2005-4-21 16:18
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
没有高手给指条路嘛???
2005-4-21 20:23
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
12
试试在OD窗口里按Ctrl+G键,输入006ECEA3,确定,看能不能回到006ECEA3那处的代码。
2005-4-21 20:33
0
雪    币: 207
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 小虾 发布
试试在OD窗口里按Ctrl+G键,输入006ECEA3,确定,看能不能回到006ECEA3那处的代码。


可以的..但是一上下拉就不正常了..
2005-4-21 20:49
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
14
每个字节指定位都下个 bp,运行,中断后,再取消其它的int3,应该就是程序要运行的指令了,若不是你先前看到的指令,就适当加nop突出程序实际运行的指令。。。

如果拉窗口就不正常,你可以看看Delphi的程序,函数或入口多数都是被隐藏起指令来的
2005-4-21 21:19
0
游客
登录 | 注册 方可回帖
返回
//