IDA逆向:结构体的逆向

Posted HsinTsao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDA逆向:结构体的逆向相关的知识,希望对你有一定的参考价值。

源代码:

int _tmain(int argc, _TCHAR* argv[])
{
    struct v1 {
        int a;
        short b;
        char c;
        int d;
        double e;
    };
    v1* heap_struct = (v1*)malloc(sizeof(v1));
    heap_struct->a = 10;
    heap_struct->b = 20;
    heap_struct->c = 30;
    heap_struct->d = 40;
    heap_struct->e = 50;
    return 0;

}

逆向分析:

结构体中的数据字段是通过名称访问的,但编译器将名称访问转换为数字偏移
所以在反汇编中难以区别
堆分配结构体

push    24              ; Size
call    ds:__imp__malloc
add     esp, 4
cmp     esi, esp
call    j___RTC_CheckEsp
mov     [ebp+heap_struct], eax
mov     eax, [ebp+heap_struct]
mov     dword ptr [eax], 10
mov     eax, 20
mov     ecx, [ebp+heap_struct]
mov     [ecx+4], ax
mov     eax, [ebp+heap_struct]
mov     byte ptr [eax+6], 30
mov     eax, [ebp+heap_struct]
mov     dword ptr [eax+8], 40
mov     eax, [ebp+heap_struct]
fld     ds:[email protected]4049000000000000
fstp    qword ptr [eax+10h]
原类型     大小             偏移
int         4(dword)       0
short       2()            4
char        1byte6
int         4(dword)       8
double      8(qword)      16

  为默认4字节对齐

总结:全局和栈分配方式中的结构体 与  普通变量相似 难以区分

以上是关于IDA逆向:结构体的逆向的主要内容,如果未能解决你的问题,请参考以下文章

IDA逆向笔记-C语言入参顺序约定和结构体

IDA,牛逼!逆向安全应该怎么学?

安卓逆向 -- IDA基本用法

逆向中静态分析工具——IDA初学者笔记之字符串分析

Android 逆向IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )

Android 逆向IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )