首页
社区
课程
招聘
[求助][讨论]IDA 9.2问题汇总
发表于: 2025-10-28 17:19 1489

[求助][讨论]IDA 9.2问题汇总

2025-10-28 17:19
1489

1、汇编patch时,xor eax,eax被翻译成31 C0,老版本是33 C0。(尚未解决)


2、函数内的代码块提前中断,call指令与下一条指令被分在不同基本块。(待更好的方法)

    发现从上层函数往底层调用,遇到retn 2(C2 00 00)时,就会出现此问题。

    怀疑是反编译器遇到call指令进行了深度优先分析,且遇到retn 2后执行了全部返回。

    目前是手动将调用空 retn2函数的地方全部改为nop,手动ucp后可恢复正常,但这个处理起来很累。


3、伪代码被表示得很复杂。(等高手出手)

   以ntoskrnl!KiSystemStartup为例:

这里_RDX只是要做个从_KPRCB到_KPCR的指针回退,逻辑代码应该是_RDX=(_KPCR*)((int64)Prcb-0x180)。IDA这个表达式真的不敢恭维。


再来看赋值操作:

这里只是要从一个地方读数据到另一个地方,IDA表达成这个样子:

后续大家遇到的问题都可以发到这里来汇总,大家一起看看怎么解决。


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

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 3750
活跃值: (4147)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
2
提前停止函数分析一般是callee被标记为不返回了(有传染性), 你看看是不是这样.
9.2我遇到主要问题是go的
go返回类型的tuple, 你修改了结构, 比如前三个r0/r1/r2其实组合起来是slice, 一按F5, 会被改回去. 如果你在localtypes里面改名, 它会直接生成一个新的tuple变回r0/r1/r2
__golang约定的第二个参数, 大到一定大小被当做栈传参但实际是寄存器传参(寄存器组可以放下.)
2025-11-3 01:43
0
雪    币: 205
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3

大佬这是怎么回事?

2025-11-3 23:43
0
游客
登录 | 注册 方可回帖
返回