CTF - RE之IDA简单使用
2022-11-26 21:37:29 Author: 仙友道(查看原文) 阅读量:14 收藏

函数搜索

查找main函数,在函数窗口Ctrl+F,搜索main

字符串搜索

IDA 中有一个窗口叫做【字符串表】 该表收集了程序中所有字符串。

View => Open SubViews => Strings

进入保存该字符串的数据区域

双击搜索到的字符串

【1】是内存地址

【2】是IDA 为该地址对应数据取的一个标识符(或者理解成变量名)

【3】则是该内存对应的数据。

跳转到引用该字符串的代码

【右键】选择【 Jump to xref 】或 选中 aHiCtferInputYo 后直接按下快捷键【X】

会显示汇编窗口,两种形式,

图标视图

文本视图

转换汇编代码为伪代码

转换伪代码方法: 在这段代码任意位置按下 Tab 键 或 F5 键

代码修复

函数名修复

选中函数右键Rename Global item或者快捷键N

返回值

判断函数的返回值是否有意义。查找一下函数的所有交叉引用,确保这个函数每一处调用都用不到返回值

点击函数名,按下Y 键,将函数的返回值类型修改为void(也可以直接按下V键)

变量类型

根据上下文信息判断参数或者变量的类型, 在标识符上按下Y 键,输入对应的类型

数组实体

第一个元素地址处,右键,Array => Array element size 表示一个元素的大小,ArraySize 表示数组大小,根据上下文分析,dword_404040的元素大小为4字节,

数组长度为 32Array element size 可以通过调节第一个元素的大小来调整。在第一个元素地址上按下d 键切换大小。

修复后,元素数据以4字节整数解析,更加直观。

Debug

本地调试

选择调试器"Local Windows debugger"

Start process

反调试绕过

查看交叉引用,全局使用了一次

在反调试函数后代码中加断点,先运行程序,在"Attach to process"选择进程,


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg3NjYwNDgzMQ==&mid=2247485655&idx=1&sn=47aba19694a848a952cb2f08a33c1b34&chksm=cf2ef427f8597d31e5906083a9c69fd5242299ac65191cfb5d36c39263a55c1165622571f108#rd
如有侵权请联系:admin#unsafe.sh