欢迎光临散文网 会员登陆 & 注册

反编译记事本(5)

2023-02-19 01:15 作者:GC_CH  | 我要投稿

    继续运行项目, 出现如下问题 :

    观察异常代码位置 : 

    异常中断的时候, dword_1009070 的值为16, 观察它的定义 :

    十进制的16是十六进制的10, 根据 *(WORD *) dword_1009070, 可以猜测它是一个数组, 而定义处出现明显的等差数列规律, 可以肯定 dword_10090及后面的一些元素构成一个WORD数组.

    但是有个问题, 0x13后面的是45, 再后面才是0x14, 这样的话数组长度是多少就很难确定. 对这种情况的处理是 : 把所有这样的变量组成一个数组. 因为这很可能是一个结构体数组. 

    合并所有的变量后得到了一个 从 1到45的数组, 除了45处在中间外, 其他元素都是正常的.

    

    此时, 又出现了另一个问题 : 

    这个数组引用了导出数组的元素, 但是IDA无法识别出来, 元素都变成常量. 如果手动解决的话就太繁琐了, 一个简单的解决方法如下:

    接下来就需要把引用了修改变量的地方都处理一下了.

    处理完后运行, 发现还是报那个错误. 只能看汇编代码比对了.

    发现这里确实是解指针的引用, 但是反编译的代码不应该是 *(WCHAR *)dword_1009034[15]; , 而应该是直接取数组元素的值.


反编译记事本(5)的评论 (共 条)

分享到微博请遵守国家法律