首页
社区
课程
招聘
关于IDA插件KeyPatch不能操作ARM某些汇编指令的解决方案
发表于: 2022-5-5 00:01 13606

关于IDA插件KeyPatch不能操作ARM某些汇编指令的解决方案

2022-5-5 00:01
13606

小白遇到这个问题可以直接参考,大佬绕过

环境:IDA7.6,Pthon3.8,keypatch相关参考这个(keypatch)

大家都知道在还原算法的时候,尤其是分析ollvm时(学习别人的思路提高软件安全意识),清楚了真实块的调用顺序后,一般会通过IDA的patch功能修改代码调用关系然后重新F5。
不知为何,分析ARM64架构程序,patch某些指令(跳转指令都会报错,一般指令不报错)的时候会遇到这种提示:
图片描述
圆圈中应该也有机器码才对,这里没有,这种情况下点击Patch后会报错:

这种情况只能通过kstool工具(支持很多架构)(git上),手动去翻译汇编指令称机器码然后手动填写可以完成patch

->>kstool arm64 "需要翻译的汇编指令" [指令所在的地址]
->>得到机器码
eg:

这个86开头的四个字节就是翻译后的汇编指令机器码。

然后替换下图中选中的前四个字节(当前地址的汇编语句对应的机器码)就完成了patch,此时原来的跳转指令可以跳转到期望的函数中。

还有个更简单的方式:
勾选IDA如图所示选项可以直接显示指令对应的机器码:

以上是手动patch,当然用脚本是最方便的(python中引入idc包):

#测试从虚拟地址addr2处读取四个字节=>得到汇编指令机器码
dest = idc.Dword(addr2)

#观察addr1处指令变为addr2处指令
idc.PatchDword(addr1,dest)
上边dest也可以自定义为跳转指令转换为机器码,那么PatchDword就实现了跳转。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2022-5-8 19:33 被nxc编辑 ,原因:
收藏
免费 5
支持
分享
最新回复 (9)
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
2

直接写十六进制数据也难受,试试这个吧

上传的附件:
2022-5-5 09:17
1
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
nxc
3
yimingqpa 直接写十六进制数据也难受,试试这个吧
多谢大佬!本来也想基于kstool写这么个界面程序,这下有现成的了
2022-5-5 09:50
0
雪    币: 689
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
用的 keystone 可以支持多构架
最后于 2022-5-5 20:08 被0llydbg编辑 ,原因:
2022-5-5 20:07
0
雪    币: 3253
活跃值: (3296)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
yimingqpa 直接写十六进制数据也难受,试试这个吧

用的llvm的汇编引擎?


能完善成 ARM->HEX 和 HEX->ARM嘛



armconverter 这样的

最后于 2022-5-6 15:07 被小调调编辑 ,原因:
2022-5-6 15:05
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
6
小调调 yimingqpa 直接写十六进制数据也难受,试试这个吧 用的llvm的汇编引擎?能完善成 ARM->HEX 和 HEX-& ...
可以,不过用处不大。
hex->arm 这个一般的反汇编工具都有。
2022-5-6 19:07
0
雪    币: 2543
活跃值: (4834)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2022-5-7 07:59
0
雪    币: 1114
活跃值: (2094)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
有尝试过把标签换成地址吗?keypatch需要的汇编指令格式有时候跟IDA的不太一致
2022-5-7 20:37
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
nxc
9
DiamondH 有尝试过把标签换成地址吗?keypatch需要的汇编指令格式有时候跟IDA的不太一致
那个地方换地址也不行的,这个插件用的也少,直接用IDC的相关函数就可以patch
2022-5-8 19:17
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
0llydbg 用的 keystone 可以支持多构架
这是 哪个 调试器???
2022-5-12 09:28
0
游客
登录 | 注册 方可回帖
返回
//