用od查找变量

中间那句的ss:[ebp+0*8]的数据怎么知道它的原始数据是在哪怎么回溯回去我知道把那句改成push1的话按钮就可以使用... 中间那句的ss:[ebp+0*8]的数据怎么知道它的原始数据是在哪 怎么回溯回去 我知道把那句改成push 1的话按钮就可以使用 展开
 我来答
Slayer_nux
推荐于2016-03-01 · TA获得超过793个赞
知道小有建树答主
回答量:226
采纳率:100%
帮助的人:213万
展开全部
这个是堆栈参数,ebp一般指向的是外层call的压栈参数。这个应该比较好找。
方法么,选中右下角堆栈窗口,Ctrl+G ebp,回车,跳转到当前ebp。然后在地址上回车显示相对地址,自己到+8位置看就行了。看样子应该是外层call的第二个压栈参数。
追问

还是不会弄……堆栈窗口修改的成00000001的话就无法保存

反汇编窗口反回到程序领空就是上面第一张图的界面

追答
多看看OD的基础操作,多学学东西。
该说的我都说了,你问的是[ebp+8]怎么回溯,我告诉你方法了,这个变量就是堆栈上来的。从堆栈窗口看,你这个是EnableWindow函数,就是启用或者禁用一个窗口控件,你可以百度这个函数查看具体释义。
单纯修改堆栈窗口是没用的亲,它们是临时数据,你要找到堆栈数据的确切来源。一般的逻辑是这样:
if(通关)
{
EnableWindow(TRUE);
}else{
EnableWindow(FALSE);
}

你要做的是改成这样:
if(TRUE)
{
EnableWindow(TRUE);
}else{
EnableWindow(FALSE);
}
或者你去找到是否通关是在哪判断的,在这个逻辑上做修改会更彻底,因为上面的做法只是单纯的修改了界面,如果按钮的处理函数中继续判断通关状态,你还是达不到目的。

做逆向要有耐心。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式