sunxingzhe2024 发表于 2024-3-3 19:51

在ida中如何修改程序跳转指令

如图,我想把这段代码的BL    .exit程序自动退出语句注释掉,

于是我使用patcher插件将这条语句改为NOP


改完之后是这样的:似乎改成功了
https://attach.52pojie.cn//forum/202403/03/193757ngcokqimoqiq5qk8.png?l
然后我保存对so的上述修改
https://attach.52pojie.cn//forum/202403/03/194027cccxevsabwbjbsqu.png?l

再重新用ida打开修改后的so,结果如下,单看这个似乎确实改过来了
https://attach.52pojie.cn//forum/202403/03/194532f21qr2nqfqqzjqk2.png?l

但是当我把他转成类C代码,结果如下:为啥不是exit(-1)被注释掉了,而是变成了另外一条指令?是不是BL指令不能直接改成NOP了?
https://attach.52pojie.cn//forum/202403/03/194539eqsg1g3hrg5v1psg.png?l













爱飞的猫 发表于 2024-3-3 21:59

改成 `NOP` 后,程序会继续执行后面的代码而不是停止。原生代码没有 “这个区域属于函数 X,执行到这里就该结束了” 的概念。

你可以在 IDA 按下空格切换视图看这个函数后面的内容的那个函数,是不是调用了 `JSON` 库的方法(如你截图所示)。

你可能需要改成类似 `RET` 的指令,让函数调用结束并返回到调用方。

我对 ARM 的汇编不是很懂,你可以参考下同文件的其它函数是如何返回的。

sunxingzhe2024 发表于 2024-3-4 09:45

爱飞的猫 发表于 2024-3-3 21:59
改成 `NOP` 后,程序会继续执行后面的代码而不是停止。原生代码没有 “这个区域属于函数 X,执行到这里 ...

收到,我把这里想简单了,确实只要改成ret让其返回就可以了
页: [1]
查看完整版本: 在ida中如何修改程序跳转指令