能力值:
( LV2,RANK:10 )
|
-
-
2 楼
你这样问问题,估计很少有人能够回答你,因为我们根本就不知道你在说什么,至少要有你正在查看的文件(.exe)才行嘛!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感觉没必要。首先,2个地址的代码你都看得到
其次,首先你要判断是你自己的问题还是代码的问题
LZ究竟要知道什么呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢楼上两位
是这样 我单步到一个retn 返回到程序空间的0064D731
单步进入 显示
0064D731 68 5877F4CB push CBF47758
我想看0064D731 上边的代码找call
但是我一向上看 就变成
0064D72F 236B 68 and ebp,dword ptr ds:[ebx+68]
0064D732 58 pop eax
我想知道 这是怎么回事 哪个正确 应该怎么看
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
求解 高手快来
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
引用“但是我一向上看 就变成
0064D72F 236B 68 and ebp,dword ptr ds:[ebx+68]
0064D732 58 pop eax ”
这种原因一个可能就是 0064D730以及前几个机器码是花指令。(我自己的代码加入了一些花指令就会出现这样的情况。)
当你运行到
0064D731 68 5877F4CB push CBF47758
的时候,这个代码是真的。而且应该是变成OD中反汇编代码窗口的第一行代码。
你要往上看,那么就变成楼主说的那样了,闪一下 0064D731的代码就变花了。
因为是花指令,所以0064D730(包括以上N个指令)处的代码不会运行的。你非要看,反而被误导。
虽然我也是个菜鸟加新手,但是看着不少新手被花指令迷惑说明
基本的汇编语言需要加强学习,尤其应该看一看没加壳的正常软件反汇编后的代码是什么样的。
|
能力值:
( LV3,RANK:30 )
|
-
-
7 楼
假设程序这么执行的:
Call A
x1...
...
...
...
0064D72F 236B 68 and ebp,dword ptr ds:[ebx+68]
0064D732 58 pop eax
label1:
0064D731 68 5877F4CB push CBF47758
A proc
.... ;刚进来的时候[esp + 4]是x1处,也就是ret后的返回地址,应该返回到call后
mov [esp + 4], offset label1;假设中途有个这种操作,通过堆栈这里改了返回地址
....
ret ;
A endp
就有可能出现这种情况了,代码随便写的,只提供一个思路。要看他中途是否动过返回地址。
也有可能是楼上说的花指令的情况,具体要看反汇编代码
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
7楼说的正确,我本想写下这个可能。tufuzi说的可能有点不太好懂。
给汇编不熟的新手简单说明下,tufuzi的代码可以写成:
push offset label1 ;相当于mov [esp + 4], offset label1
....... ;这里要保证堆栈平衡,也可以没有任何代码。
ret
label1:
........
上面的代码意思就是跳到label1处执行。这个例子告诉我们看到 ret不一定前面有call
|
能力值:
( LV7,RANK:110 )
|
-
-
9 楼
有可能是加壳了。
我脱ASPack2.12时遇到过类似情况,你可以找找脱壳的教程。
看看有没有经过这样一个call(伪代码):
//call begin
pop eax
inc eax
push eax
retn
//call end
经过这样一个call后,od里显示的代码就可能有问题了。
不过我不知道解决方法,只能建议你查查ASPack的资料。
记得有篇讲广义ESP定律的文章说到过。
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
[QUOTE=怀特迈恩;667221]7楼说的正确,我本想写下这个可能。tufuzi说的可能有点不太好懂。
给汇编不熟的新手简单说明下,tufuzi的代码可以写成:
push offset label1 ;相当于mov [esp + 4], offset label1
....... ...[/QUOTE]
其实我先也准备写push的 ,不过脑袋还在想那inline hook就给忘记了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢 大家 我现在有个思路了
|
能力值:
( LV7,RANK:110 )
|
-
-
12 楼
使用Ctrl+Shift+上键和Ctrl+Shift+下键应该可以
|
|
|