od使用中不小心修改了原汇编命令,怎么撤销修改?[两个问题解决了一半]
本帖最后由 zhfak 于 2023-3-28 21:46 编辑本人新接触逆向,对于OD的很多操作、功能都不太熟悉,有些问题在网上搜到的教程中也没得到答案,不得已前来求助。初次使用OD逆向分析一个程序的代码中遇到如下问题:
1.好不容易追踪执行到关键函数的目标状态了,谁料小手一抖,误操作将原汇编命令给修改了!怎么撤销回去?
Ctrl+Z没反应,右键菜单没有撤销选项,顶部菜单也没找到撤销命令。
2.堆栈窗口和寄存器窗口中在有的数据后面会有自动的注释,如图中红圈框出的地方,明明是个指针地址,它标注个ASCII乱码,此时eax寄存器才是真正的字符串指针,它却不标注。如何修改设置?
还望热心人不吝赐教,谢谢!
下个断点,重新跑程序 3954385 发表于 2023-3-24 15:31
下个断点,重新跑程序
谢谢!
但是,因为这函数的重复调用率比较高,我是要在特定调用条件下看它的数据,重新跑可能调用关系变了啊。
网上搜索时曾看到一个帖子说右键菜单选撤销,但我截图中右键菜单里没有撤销选项呐。难道这个版本没有撤销功能? 1. 正常情况下右键被修改的汇编部分会出现“撤销选择处修改”,不过楼主的这行语句是灰色的,这表示这里的修改已经被撤销了。
2. 指针并不是字符串,它只是一个数字。字符串应该在指针的内容指向的地方。你可以右击指针,选择“在数据窗口中跟随”。显示为乱码可能是因为字符被加密了或是解码方式不对,你可以点击数据窗口的表头“ASCII”,看看能不能以Unicode方式解码。 @zhfak
有种记录方式 叫做只记录FOA地址(为啥呢? 因为只有这种地址才不会变化的)
你那汇编笔记 和 破解的记录呢? 功课没做好吧。
堆栈 只能看
寄存器可以改
只有左边的汇编窗口的数据能改并能撤销。许多年不用了,热键是啥菜单里找吧。 luliucheng 发表于 2023-3-24 19:40
1. 正常情况下右键被修改的汇编部分会出现“撤销选择处修改”,不过楼主的这行语句是灰色的,这表示这里的 ...
谢谢大佬热心解答!第一个问题解决了。
我试了下先记住原命令后修改了汇编代码,被修改的部分变成了红色显示,右键菜单有“撤销选择处修改”的选项,快捷键是alt+BkSp,点击能撤销修改,撤销后和我记住的命令代码相同,并且撤销后是灰色显示的。可能我上次只是不小心误操作了汇编修改,它虽然变成灰色显示了,但实际上并没有真正改变原命令内容,所以右键菜单没有撤销选项。我当时没记住原命令,对OD使用也不熟悉,看到显示颜色和原来的不一样,左边从函数入口到返回命令之间表示函数范围的辅助线在该行处是断开的,以为是命令被修改了,也以为撤销修改能连代码颜色和辅助线一起恢复到原样呢,此时右键菜单里是没有撤销选项的,我就以为是修改了但无法撤销了。
OD的功能很多,但帮助提示信息很少,对初学者来说不太友好,往往一头雾水,不知道怎么操作和怎么使用这些功能。找到的教程多是围绕某个实战例子的过程来组织的图文或视频,关键知识点比较分散,初学者在不熟练的情况下想要回顾查找很不方便,请问大佬有可以用于自学中随时翻查的关于OD的软件说明或操作手册、功能详细介绍之类的文档吗?
第二个问题可能是我没描述好,详细描述问题如下:
图中的堆栈窗口圈出的0017FAE0处存放的数据为02E80A88,这是一个地址,这个地址中存放的数据是0054A2C0,也是个地址,所以我说02E80A88是个指针,但是在堆栈窗口中它自动将0054A2C0这个地址数据当做字符串对待,将其ASCII内容“愧T”作为注释标注出来了。如果运行中某个寄存器的值为02E80A88时,它也会在寄存器窗口中该寄存器的后面注释上:ASCII "愧T"。
图中eax寄存器的值为0017FAE4,从这个地址起,连续存放的数据是接收到的封包解密后的明文字符串,但是它却没有注释”ASCII ......"之类的。
这是为什么?怎么设置能让它不要如此把地址当做字符串来注释而真正的字符串却忽视了? 冥界3大法王 发表于 2023-3-25 11:11
@zhfak
有种记录方式 叫做只记录FOA地址(为啥呢? 因为只有这种地址才不会变化的)
你那汇编笔记 和 破 ...
谢谢大佬热心解答!
我是下断点后反复用步入和步过手动追踪到这个状态的。对于您说的“只记录FOA地址“对我来说还看不明白,有点儿高深了哈。是自动追踪中设置的一种记录方式吗?刚开始学习逆向,自动跟踪我还没用过呢。{:1_925:} 业余爱好者,平时上班工作时可能无法及时回复,还请见谅! zhfak 发表于 2023-3-26 13:42
谢谢大佬热心解答!第一个问题解决了。
我试了下先记住原命令后修改了汇编代码,被修改的部分变成了红 ...
其实我也只是个小白,OD的操作都是自己摸索出来的,并没有什么介绍说明。
根据您的描述,0017FAE0处存放的数据不是一般指针,而是一个”双重指针“,即指向指针的指针,而OD只能解析一步,因此会把被指向的指针当作字符串。至于E4的问题,您能否再试试右击eax后的“0017FAE4”,选择“在数据窗口中跟随”,看看数据窗口显示了什么。我也没什么研究,可能确实解决不了这个问题。 这两个地址存放的数据内容以及数据类型我都已经知道的。我只是奇怪为啥同样是指针数据类型,有的它标了ASCII而有的没标,面对这种情况强迫症犯了,想搞清楚了设置一下让它统一起来。
页:
[1]
2