恶意代码分析-第五章-IDApro

设置

  • Options - General,选择Line prefixes并设置Number of Opcode Bytes 为6.可以看到16进制代码
  • Options - General,选择Auto comments,IDA帮助注释

窗口

函数窗口:左拖拽,可以看到长度,以函数长度排序,过滤出规模大的函数

每个函数也关联了一些标志位(F,L,S)。L--库函数

名字窗口:函数名,命名代码,命名数据,字符串

字符串窗口:默认显示长度超过5个的字符ASCII字符串 通过setup来改动

导入表窗口

导出表窗口

结构窗口

链接

子链接:printf /sub_4010A0

本地链接:loc_40107E

偏移链接:内存偏移链接 字符串引用

导航栏

代码

              浅蓝色:被FLIRT识别的库代码

              红色:编译器生成的代码

              深蓝色:用户编写的代码

数据

              粉红色:导入数据

              灰色:已定义数据

              棕色:未定义数据

跳转

G键---跳转到虚拟地址或命名位置

Jump->Jump to File Offset---跳转到原始文件

搜索

Search--Next Code,移动光标到包含所指定的下一个位置

Search--Text,在整个反汇编窗口搜索一个指定的字符串

Search--Sequence of bites ,搜索指定数据和操作码组合

交叉

代码交叉:函数名 按X

数据交叉:跟踪二进制数据访问

p:是被调用的引用

            r:是读取的引用

分析函数

 

bp-based:基于EBP栈针的使用,局部变量和参数都通过EBP寄存器引用

var_4:局部变量,负位置

arg_0:参数,正位置

Alt+P 修正函数 勾选BP based frame 指定4bytes for Saved Registers

图形:

 

-----对当前的交叉引用,生成所有指向这一个函数

----本函数对其他函数的调用

使用命名常量:

 

可以任意选择

加载类型库:view - open subviews - type libraries查看当前加载的库

获取本地API的符号常量,ntapi

分析一个linux二进制时,gnuunx

重定义代码和数据:

U:取消定义

C :定义代码

D:定义数据

A:定义ASCII

IDAPython:

from idautils import *
from idc import *
heads = Heads(SegStart(ScreenEA()),SegEnd(ScreenEA()))
functionCalls = []
for i in heads:
    if GetMnem(i) == "call":
        functionCalls.append(i)
print "Number of calls found: %d" % (len(functionCalls))
for i in functionCalls:
    SetColor(i,CIC_ITEM,0xc7fdff)

额外插件

zynamics bindiff使用:https://blog.csdn.net/lostspeed/article/details/71599430

Hex-Rays:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值