首页
社区
课程
招聘
[原创]基于IDA Hex-Rays Microcode的函数内联
发表于: 2026-4-23 19:13 3183

[原创]基于IDA Hex-Rays Microcode的函数内联

2026-4-23 19:13
3183


IDA Pro中汇编指令只能进行替换,如果需要新增或删减指令需要修复段表比较麻烦,难以通过添加汇编代码,进行反编译。如下如所示:


其中v0, v1被定义为value may be undefined, 再来看一下对应的汇编代码如下如图所示:

其中主要对sub_D32474、sub_D37040和sub_D31CC4这个函数进行观察
先来看看这个三个函数的汇编代码如下图所示:

先看第一部分,合起来就是以下代码:
BL              sub_D32474
MOV             W0, #0x38 ; '8' ; unsigned __int64
B               ._Znwm  ; operator new(ulong)
本质上其实就是 ptr = new(0x38),再来看第二部分:
BL              sub_D37040
MOVI            V0.2D, #0
MOV             X19, X0
ADD             X20, X0, #0x18
STR             XZR, [X0,#0x30]
STP             Q0, Q0, [X0]
STR             Q0, [X0,#0x20]
RET
这部分参数其实就是ptr, 再来看第三部分:
ADRP            X1, #aStartpageui@PAGE ; "startPageUI"
ADRP            X2, #aLcomTencentKin@PAGE
ADD             X1, X1, #aStartpageui@PAGEOFF
ADD             X2, X2, #aLcomTencentKin@PAGEOFF
BL              sub_D31CC4
MOV             X0, X21
B               sub_D31248


不难发现,其通将正常的调用约定,隐匿在函数调用,导致IDA Pro反编译时识别不出来,这个时候正常的想法可以将这种指令进行内联,但是这很麻烦,这里引入IDA Hex-Rays Microcode, 微码的细节可以参考以下文章:
https://bbs.kanxue.com/thread-288865.htm

先来看一下还原效果:

下面介绍如何通过microcode进行实现函数内联
下图是生成微码,成熟度必须选用MMAT_GENERATED,因为成熟度过高会导致,PROP出现问题,得在还没构建数据流的情况下进行插入(本人尝试多次,难以修复,不好调试)


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2026-4-24 09:06 被belikewater编辑 ,原因:
上传的附件:
收藏
免费 34
支持
分享
最新回复 (11)
雪    币: 868
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
Tql
2026-4-24 01:56
0
雪    币: 158
活跃值: (4726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习。
2026-4-24 15:26
0
雪    币: 2790
活跃值: (6301)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2026-4-26 10:39
0
雪    币: 301
活跃值: (1468)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zxc
5
Tql
2026-4-28 16:08
0
雪    币: 2955
活跃值: (2375)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
Tql
2026-4-28 17:49
0
雪    币: 3865
活跃值: (8978)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
7
microcode就是一坨屎
2026-4-28 17:52
0
雪    币: 3865
活跃值: (8978)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
8
microcode就是一坨屎
2026-4-28 17:52
0
雪    币: 0
活跃值: (1681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
666
2026-4-30 16:48
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
666
2026-5-4 18:28
0
雪    币: 0
活跃值: (726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
2026-5-4 21:25
0
雪    币: 208
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
66666
2026-5-8 23:14
0
游客
登录 | 注册 方可回帖
返回