首页
社区
课程
招聘
[旧帖] 求助,关于IDA结构体识别 0.00雪花
发表于: 2012-8-19 01:14 4321

[旧帖] 求助,关于IDA结构体识别 0.00雪花

2012-8-19 01:14
4321
学用软件,我把加密解密书上那段小程序输入了

struct student
{
        long id;
        char name[20];
        long age;
};

student stu[2]={{10,"person1",20},{12,"Person2",30}};

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
        int nRetCode = 0;

        // 初始化 MFC 并在失败时显示错误
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
                // TODO: 更改错误代码以符合您的需要
                _tprintf(_T("错误: MFC 初始化失败\n"));
                nRetCode = 1;
        }
        else
        {
                student *p=stu;
                for (int i=0;i<2;i++)
                {
                       
                        printf("%d=%d,%s,%d\n",i,p->id,p->name,p->age);
                        p++;
                }       
           }

        return nRetCode;
}

VS2005编译后
然后用IDA载入就遇到问题了,编译器吧结构体偏移指到了中间的name上了,我怎样才可以吧esi-4指向结构体头部??

.text:0040103B                 xor     edi, edi
.text:0040103D                 mov     esi, offset aPerson1 ; "person1"
.text:00401042
.text:00401042 loc_401042:                             ; CODE XREF: _main+5Fj
.text:00401042                 mov     eax, [esi+14h]
.text:00401045                 mov     ecx, [esi-4]
.text:00401048                 push    eax
.text:00401049                 push    esi
.text:0040104A                 push    ecx
.text:0040104B                 push    edi
.text:0040104C                 push    offset aDDSD    ; "%d=%d,%s,%d\n"
.text:00401051                 call    ebx ; printf
.text:00401053                 add     edi, 1
.text:00401056                 add     esp, 14h
.text:00401059                 add     esi, 1Ch
.text:0040105C                 cmp     edi, 2
.text:0040105F                 jl      short loc_401042

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 188
活跃值: (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
换句话说就是结构体负偏移;百度不到,只有一蓑烟雨论坛有人提出来,不过没最终没有解决
2012-8-19 09:51
0
雪    币: 416
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你的目的是什么,如果是读结构内容的话,直接使用结构读就行了
2012-8-19 10:04
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
直接提取不就行了么
2012-8-22 20:15
0
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
5
1) shift+- 将esi-4 转换为 esi+0FFFFFFFCh
2) 鼠标选中esi,然后按T(N.B.不能直接按T),会出现struct offsets对话框,offset delta填上0x4
2012-8-28 15:08
0
游客
登录 | 注册 方可回帖
返回
//