IDA逆向技巧(持续更新)

本文详细介绍了IDA的逆向分析技巧,包括IDA与OD的联合使用、数据误识别处理、结构体创建、虚表建立、数据类型识别、字符串显示、交叉引用等功能的运用,帮助逆向工程师提升分析水平。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读者如果发现错误,请指正。

IDA的逆向分析水平就是一个逆向工程师的水平;
7.1 IDA与OD的联合使用

一般使用OD下断点,找到关键代码位置,然后使用IDA静态看流程。
需要注意的是IDA需要与OD基地址对齐,这样才方便在IDA中查找代码位置,具体方式如下:

Edit --->  Segment ----- Rebase  Program  : 设置基地址;

WINdbg中基地址在“符号”中查看;在OD中基地址在Model中查看;

IDA中G + 地址,即可找对对应位置;

 

 

7.2 数据不小心转换成为函数,如何处理?

如果不小心使用P将数据识别成了函数,可以使用D,转换成数据,再用C转换成为代码;

毕竟IDA不存在撤销功能;

 

7.3 IDA如何创建结构体?

7.3.1 结构体的创建   

IDA中结构体成员一般出现在:类初始化的地方(XX.dll);

根据成员的多少,我们创建结构体的大小,注意虚表vt占4个字节;一般有三个地方有助于我们创建结构体初始化函数成员列表、memcpy函数的使用、数据库字段;

在初始化函数中看见最后一个成员为V1[239],可以 使用“Reset Point   Type” 可以改为:v1-> 1036,这样就能看到成员在的偏移,就可以设置结构体大小为1036 + 4.。

创建了结构体后,structure窗口中可以N改写字段的名称;

7.3.2 结构体的使用

创建好结构体后,我们就可以使用Y来修改分析的数据类型;

7.3.3 结构体的导入和导出使用

有时我们需要在一个数据库中创建结构体,在另外的一个数据库中使用,具体方法:

在数据库A的localtype视图中选中需要导出的数据类型,右键 --- “export to header”,如果是多个结构体写到同一个文件,请选择追加方式(Append),导出到一个.h文件;

接下来是导入到另外一个数据库,具体方法:

Ctrl + F9 :”选择一个C文件头去解析”,选择需要导入的一个文件,这样我们就会可以在LocalType中查看我们自建的结构体;

7.3.4 创建结构体  例子

一般方法构建结构体(方法1):在structure窗口,Insert 一个结构,自己命名(如struct_4),在end处使用D添加结构体数据,在成员处D 切换占有的字节数(db、dw、dd),在成员处使用Y来改变识别类型(int、float、double、LPVOID、BYTE field_60[1024]、)
使用: 在相应的rdata处,使用Y改变当前位置的识别类型为struct_4;
例如:

创建结构体数组: 
00000000 struc4          struc ; (sizeof=0x28, mappedto_194)
00000000                                         ; XREF: .data:stru_A47A220/r
00000000 field_0         dw ?
00000002 field_2         db ?
00000003 field_3         db ?
00000004 field_4         dd ?
00000008 field_8         dd ?
0000000C field_C         db ?
0000000D field_D         db ?
0000000E field_E         db ?
0000000F field_F         db ?
00000010 field_10        dd ?
00000014 field_14        dd ?
00000018 field_18        dd ?
0000001C field_1C        dd ?
00

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值