首页
社区
课程
招聘
[求助]IDA是否会省略掉简单函数的反汇编过程?
发表于: 2015-6-16 23:08 3614

[求助]IDA是否会省略掉简单函数的反汇编过程?

2015-6-16 23:08
3614
很简单的测试程序,代码如下:
// test.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
int getMax(int * p, int counts)
{
        if (p == 0)
        {
                return -1;
        }

        int max = 0;
        for (int i = 0; i < counts; i++)
        {
                if (p[i] > max)
                {
                        max = p[i];
                }
        }
        return max;
}

int _tmain(int argc, _TCHAR* argv[])
{
        int counts = 6;
        int * p = new int[counts];
        p[0] = 9;
        p[1] = 1;
        p[2] = 3;
        p[3] = 100;
        p[4] = 8;
        p[5] = 6;

        int max = 0;
        max = getMax(p, counts);
        printf("max = %d\n", max);

        return max;
}

生成的执行文件用IDA反汇编后:
.text:00401000 wmain           proc near               ; CODE XREF: __tmainCRTStartup+F8p
.text:00401000                 xor     ecx, ecx
.text:00401002                 mov     eax, 6
.text:00401007                 mov     edx, 4
.text:0040100C                 mul     edx
.text:0040100E                 seto    cl
.text:00401011                 neg     ecx
.text:00401013                 or      ecx, eax
.text:00401015                 push    ecx
.text:00401016                 call    ds:__imp_??2@YAPAXI@Z ; operator new(uint)
.text:0040101C                 push    64h
.text:0040101E                 push    offset Format   ; "max = %d\n"
.text:00401023                 mov     dword ptr [eax], 9
.text:00401029                 mov     dword ptr [eax+4], 1
.text:00401030                 mov     dword ptr [eax+8], 3
.text:00401037                 mov     dword ptr [eax+0Ch], 64h
.text:0040103E                 mov     dword ptr [eax+10h], 8
.text:00401045                 mov     dword ptr [eax+14h], 6
.text:0040104C                 call    ds:__imp__printf
.text:00401052                 add     esp, 0Ch
.text:00401055                 mov     eax, 64h
.text:0040105A                 retn
.text:0040105A wmain           endp

getMax这个方法好像被省略掉了,真的是这样么?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
不是IDA省下的吧.
因为这个函数在程序里只用了一次.
所以被编译器 inline 了.
你用别的工具反编译也会得到差不多的结果.
2015-6-16 23:35
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
你这个是RELEASE编译出来的吧,换成DEBUG编一个就不会优化了,如果还是这样的话,就把代码优化那个disable再编就行了

这种和IDA无关,是你的编译器优化后的结果
2015-6-16 23:35
0
游客
登录 | 注册 方可回帖
返回
//