我有一些关于如何绕过几百行到达地址的问题。假设我们有以下场景:
+ -----------------------+
004019EF | | <----- we are here
| content of function |
| 004019EF |
| |
| |
+------------------------+
| |
| this area contains |
| lines which |
| I want to bypass |
| quickly |
| |
+------------------------+
00401E1F | | <-- we want to go here
| content which I |
| want to analyze |
| |
| |
+------------------------+
因此,情况是例如我在 004019EF,然后我发现 00401E1F 的位置似乎也很重要。我决定去那里。为此,我单击 Ctrl+G,键入目标地址并在 00401E1F 处设置断点(单击 F2)。然后我让它运行。但是程序没有到达那个地方。它终止进程并在带有 RETN 的位置结束。于是,我又开始了这个过程。但是这一次,我手动从 004019EF 行到 00401E1F。在途中,我通过用 NOP 指令替换它们来消除所有导致终止的行/指令。最后,我到达了地址 00401E1F。
我的问题是:
当我用NOP替换指令或改变跳转指令的标志来修改程序的执行流程时,这些修改对00401E1F的内容会不会有问题?
我的意思是我可以说以下几点:
“这些指令会导致问题,所以用 NOP 删除它们不会有问题”
或者
我是否会错过 004019EF 和 00401E1F 之间区域的一些结果,这可能对 00401E1F 的内容很重要?如果是,那么:
是否有另一种方法可以绕过该线路到达目标地址而无需修补/更改线路或指令?