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 1(byte) 6 int 4(dword) 8 double 8(qword) 16
为默认4字节对齐
总结:全局和栈分配方式中的结构体 与 普通变量相似 难以区分
以上是关于IDA逆向:结构体的逆向的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )
Android 逆向IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )