ida逆向c语言失败,IDA逆向代码 --- F5 反汇编识别错误的情况

本文探讨了在使用IDA进行逆向工程时遇到的F5反汇编识别错误,通过实例分析了如何理解未赋值变量的实际含义,并提供了修正错误的思路。在遇到类似问题时,可以通过动态调试和内存值分析来推测代码行为。
摘要由CSDN通过智能技术生成

场景:F5 之后的伪代码,变量直接被使用,没有被赋值,但是根据上下文,一定具有含义;

例如:

v3 = &v104 + 0x14 * (signed __int16)v29 - 0x442;

// 这里的104 是什么??前面只有定义,没有被赋值,而且不属于数组中的一部分

查看对应Arm指令:

.text:9FAADCD8 MOVS R6, #0x50 ; 这里的0x50 是什么??

.text:9FAADCDA STR R0, [SP,#0x1218+var_1200]

.text:9FAADCDC LSLS R3, R4, #0x10

.text:9FAADCDE ASRS R3, R3, #0x10

.text:9FAADCE0 MULS R6, R3

.text:9FAADCE2 MOVS R0, #0x1200 ;这里 是&V104 查看 int v104; // [sp+1200h] [bp-18h]@9

.text:9FAADCE6 LDR R1, =0xFFFFEEF8

.text:9FAADCE8 ADD R0, SP

.text:9FAADCEA ADDS R6, R0, R6

.text:9FAADCEC MOVS R4, #1

.text:9FAADCEE ADDS R6, R6, R1

查看对应的汇编,其实应该这么写:

v3 = (signed int *)v54 + 0x14 * (signed __int16)v29;// OK 通过调试发现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值