恢复被IDA更改的代码

以下是IDA生成的一段代码:

        v64 = 24;
        v65 = byte_C747D9[v77[0]];
        memcpy(v66, v55, sizeof(v66));
        if ( mmi_application_types__t_data_formatD5(0x18u) )

以上第4行中的函数调用中的参数是常数0x18,也就是10进制的24。

第1行中出现过24,难道IDA在函数调用语句中把参数v64改成了0x18?

查看对应的汇编代码:

.text:00AA185C mov     byte ptr [ebp+var_A268], 18h
.text:00AA1863 mov     eax, 0
.text:00AA1868 mov     al, [ebp+var_A1CD]
.text:00AA186E mov     al, byte_C747D9[eax]
.text:00AA1874 mov     byte ptr [ebp+var_A268+1], al
.text:00AA187A lea     edx, [ebp+var_A264]
.text:00AA1880 lea     eax, [ebp+var_A3B8]
.text:00AA1886 sub     esp, 4
.text:00AA1889 push    64h             ; Size
.text:00AA188B push    eax             ; Src
.text:00AA188C push    edx             ; Dst
.text:00AA188D call    _memcpy
.text:00AA1892 mov     eax, 0
.text:00AA1897 mov     al, byte ptr [ebp+var_A268]
.text:00AA189D mov     [esp+1Ch+var_1C], eax
.text:00AA18A0 call    _mmi_application_types__t_data_formatD5

果然如此!原始代码中此处的调用语句的参数确实是v64。如果改成常数0x18将不利于对程序的理解和未来的维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值