首页 > 其他分享 >IDA技巧——结构体

IDA技巧——结构体

时间:2024-04-24 16:00:37浏览次数:24  
标签:IDA 快照 定义 技巧 快捷键 IDB 结构

参考 https://bbs.kanxue.com/thread-266419.htm

本文适用于初次使用IDA的小白(我本身也是小白),大佬请略过。

IDB快照

在我们开始修改结构体之前,首先为最初的IDB做一个快照是良好的习惯,这样可以帮助我们迅速还原某个时间点的IDB状态。比如我们改错了某个数据却没办法撤销IDB所作的修改。使用快捷键Ctrl+Shift+W唤起IDB快照窗口,为当前IDB快照起个名字后点击OK。

随意修改一处数据,我这里直接将WinMain函数内容的解析取消掉了。

使用快捷键Ctrl+Shift+T唤出IDB快照弹窗。

双击提示是否恢复IDB快照,我们点击YES还原IDB初始状态。

可以看到IDB被还原。

IDB设置关键标记

我们在逆向的过程中为关键的判断或者指令设置标记可以方便我们迅速定位标记位置,防止我们回过头来找不到之前的关键点。选择Jump->Make position选项设置地址0x40162A处的指令作为标记,可以轻松回到当前指令位置。(快捷键Alt+M)

同样需要为标记点起个名字

接下来随意移动到一处位置的IDB位置。

可以选择Jmp->Jmp to make position选择要跳转的指令标记。也可以使用Ctrl+M快捷键。

双击回到标记点

 

 

IDA使用C语言语法快速定义结构体

首先打开IDA,使用快捷键Shift+F1打开本地类型窗口。

image.png

按下insert快捷键,弹出类型声明窗口,在该窗口的编辑区域以C语言语法定义结构体。

image.png

输入定义的结构体。

image.png

Ctrl+F5搜索我们刚定义的结构体名,此时结构体还没有被导入到IDB中。

image.png

双击我们想要导入的结构体,选择导入结构体。

image.png

点击OK后IDA会自动解析我们定义的结构体。

image.png

再定义好结构体后我们往往还想在F5的伪C代码中定义结构体指针。我们以以下函数为例子,我们想把第一个参数定义成IPHeader的指针类型。

image.png

右键选择我们想定义结构体指针的参数->选择Conver to Struct *选项。可以看到弹出让我们选择想要转换城的结构体指针类型。

image.png

搜索我们想要的结构体类型后点击OK。

image.png

可以看到结构体被解析成结构体指针。

image.png

 

IDA定义结构体数组

定义一个结构体数组钱,首先要定义数组的结构体元素。我这里定义了3个大小为DWORD的成员,结构体整体大小为12字节。

image.png

选择要定义结构体数组的首地址,按下快捷键ALT+Q,让结构体数组的第一个元素定义为结构体。

image.png

按下快捷键shift+*定义数组,因为我们选中了MyStruct结构体,所以默认该结构体为数组元素。

image.png

设置好数组元素个数点击OK即可。

image.png

 


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

标签:IDA,快照,定义,技巧,快捷键,IDB,结构
From: https://www.cnblogs.com/kuangke/p/18155662

相关文章

  • BOSHIDA DC电源模块的原理及工作方式
    BOSHIDADC电源模块的原理及工作方式DC电源模块是一种将交流电转换为直流电的设备,它将交流电输入端转换为稳定的直流电输出,以供电子设备使用。DC电源模块的工作原理及工作方式如下。 DC电源模块主要由以下几个主要组成部分构成:1.变压器:DC电源模块的输入端通常接收交流电,而......
  • linux shell 脚本调试技巧
    本文分享自天翼云开发者社区《linuxshell脚本调试技巧》,作者:g****n1.bash-x加脚本这是最常用的调试手段,终端会打印出,脚本执行过程中的每一个命令。a.查看脚本流程有无错误b.查看变量值有无错误c.查看退出位置是否符合预期例如脚本 small_test.sh #!/bin/bashecho......
  • 微机结构说明
    微机的基本结构包括中央处理器,内存,输入设备,输出设备和存储设备。中央处理器是微机的核心部件,负责执行计算机的所有计算和控制任务,它由控制单元和算术逻辑单元组成。控制单元负责指令的解码和执行,而算术逻辑单元负责处理数字和逻辑运算。CPU是微机中最关键的组件,其性能直接影响到计......
  • 读《我和Labview》5条件结构和顺序结构
    5条件结构和顺序结构条件结构布尔类型条件选择结构其它数据类型的条件选择是否要设置默认分支?合理设置悬着条件隧道避免把控件放在条件结构内选择函数顺序结构程序执行顺序创建顺序结构层叠式顺序结构平铺式顺序结构无形胜有形的最高境界6用户自定义控件7控件的局......
  • 数据结构:双向链表的创建·插入·删除
    数据结构:双向链表的创建·插入·删除/***@filename:数据结构:双向链表的创建·插入·删除*@brief:实现双向链表的创建·插入·删除*@author :[email protected]*@date :2024/04/23*@version:1.0*@note:none*CopyRight(c......
  • 数据结构笔试题——基于C语言的链表功能函数实现
    题目1题目要求如下:/***@functionname:LList_CntdmFind*@brief查找链表中,倒数第k个位置上的节点*@param:​ @Head:链表头节点​ @k :倒数第k个位置*@retval:int型返回值;返回-1时即为失败,返回0时表示成功;*@date:2024/04/23*@version1.0*@n......
  • 处理DataFrame的技巧
    DataFrame:user_idnameagecountryscorecontinent1001Mark55Italy4.5Europe1000John33USA6.7America1002Tim41USA3.9America1003Jenny12Germany9Europe如果在构造DataFrame时没有提供列名,那么pandas会用从0开始的数字为列编号。us......
  • 数据结构基础第3讲
    数据结构基础第3讲栈及其应用内容考点一:栈的概念1.顺序栈的定义:出栈顺序情况计算给定n个元素,出栈顺序的情形满足卡特兰数,计算公式:\[\frac{C_{2n}^{n}}{n+1}\]例题:确定第一个出栈的谁。有两种可能:找带头大哥。栈的顺序存储结构顺序栈操作顺序栈4要素栈空......
  • 数据结构基础第4讲
    数据结构基础第4讲队列内容考点一:队列概念代码不考1.队列的定义考点二:顺序队列的定义考点三顺序队列的性质与操作4要素:考点四:循环队列的定义由于顺序队列会存在假溢出问题,引入循环队列。假溢出:描述:考点五:循环队列的操作判断空满:性质:考频75%元素个......
  • 数据结构基础第6讲
    数据结构基础第6讲图及其应用1-2个选择考点一:图的基本概念1.图基本概念连通图:极大连通子图-连通分量:极小连通子图-生成树:强连通顶点给定n个顶点,要保证图在任何情况下连通需要最小边数:1.生成树,边(n-1)2.完全无向图\(\frac{(n-1)\timesn}{2}\)3.\(\left......