为什么 IDA Pro 的伪代码函数不会产生 for 循环?

逆向工程 艾达 idapro插件
2021-06-18 09:33:08

问题出现在逆向工程课程中。教授问了这个问题。我的意思是,从整体上看,while 循环 == for 循环,我对此没有任何问题。

IDA Pro book...谷歌...在这里没有看到任何在线内容。

那么为什么 IDA pro 从不在其伪代码生成器中生成 for 循环呢?

2个回答

仅仅因为你没有出现它们并不意味着它们不存在。根据我的经验,反编译器for一直在生成循环。

编辑:这只是一个例子:

 loc_804B520:
                 xor     edx, edx
                 jmp     short loc_804B52B

 loc_804B524:
                 mov     al, [edi+edx]
                 mov     [ebx+edx], al
                 inc     edx

 loc_804B52B:
                 cmp     edx, esi
                 jl      short loc_804B524

输出:

  for ( i = 0; i < a2; ++i )
    *(_BYTE *)(v2 + i) = *(_BYTE *)(a1 + i);

反编译器可以产生for循环。

它使用Ctree语句元素cit_forCtree表达式cfor_t来表示反编译图中的这些代码结构。