汇编二进制到十六进制转换程序_CTF二进制方向入门指北之RE(四)

云影安全

YunYingSEC

RE

01

说在前面

  阿巴阿巴阿巴……本菜鸟(黑鸟)终于给大家准时更新一篇了。今天我们来看一下逆向的工具使用。当然,本文只涉及基础操作,大佬勿喷。

02

正文

静态分析:

IDA软件界面:

0d01ef3e6751f1d6348d2c8152c55ced.png

 快捷栏

a646ad250b99a3fff6c00f44b38e7628.png

d8ad7267bb20f4df45ddd4f559438058.png

返回上一界面(快捷键ESC)/回到下一界面

e4d2826cf5899f2926debcb3975906ad.png

搜索,从左至右依次为“数值搜索”,“文本搜索”,“二进制搜索”。

8d7e30d18231d7d6ae6fc88edfbaeecb.png

转换为数组

视图菜单(View-Open subviews):

23c11fad08d6ff00bfffd76eda878b31.png

主窗口:

437dd8c85f62a56ce4179da088ccc519.png

左侧为函数窗口,显示了程序中被IDA识别的所有段。在Segment一列中标注了这些段的类型,其中.text段为代码段,是逆向是重点关注的对象。Start一列是这些段的起始位置。在代码段中,有一个粗体显示的main,这是程序的主入口。逆向也从这里开始。

详细用法:

Disassembly(反汇编)

菜单栏-View-Open subviews-Disassembly

IDA加载程序后默认显示的窗口,在窗口标签上显示为“IDA View”。该窗口中显示的是程序的汇编码(Assembly)。下图是一个程序的主入口的汇编码。 

b428ff070996adf36fafb88fba6dd367.png

在这里按空格,会切换至图形模式:

3b3246307b47ca516d2adf992909eadc.png

Generate pseudocode(生成伪代码):

菜单栏-View-Open subviews-Generate pseudocode

快捷键:选中函数后按F5(一定要在一个函数里面)

IDA中最常使用的功能,将难以看懂的汇编码转换为比较容易看懂的C语言代码。

22d34efc4d5246d87eae9b01d6859a16.png

双击函数,便会进入所点击函数的伪代码。

快捷键:

X:查看交叉引用

N:重命名函数或者参数

ESC:返回上一个窗口

……

IDA动态:

虽然IDA是一个静态分析工具,但是它同时具有动态调试功能,动态调试功能和下面要讲到的x64dbg的操作过程一样,所以我们留着,等一会说。

IDA是一个十分强大的工具,IDA有个一个比较全面的“手册”《IDA权威指南》。我们这里就只是把IDA最最简单的用法写出来,如果想要了解更多,可以看那本书或者再网上搜索更多资源

动态分析:

 按道理来说,现在最著名的动态调试器应该是GDB和OD(OllyDbg),但是由于GDB的命令行操作和OD仅支持32位程序的缘故,这里我们动态调试主要是讲解x64dbg以及x32dbg的使用。但是x32dbg的使用与OD的使用大同小异,所以我们也就不单独讲解OD的使用了。

面板信息

41c69efbddf72a740005567fdf881b2f.png

反汇编面板窗口(Disassembler window):

反汇编面板窗口显示被调试的代码,一共四列:

地址(Address):显示双击行地址的“相对地址”,再双击显示标准地址

十六进制机器码(Hex dump):双击设置或取消断点

反汇编代码(Disassembly):显示汇编代码

注释(Comment):允许增加或编辑注释(快捷键“;”)

信息面板窗口(Information window):

在进行动态调试的过程中,显示与指令相关的各寄存器的值、API函数调用以及跳转信息、内存数据等

数据面板窗口(Dump window)

以十六进制显示内存数据。可以用“Ctrl + G”快速定位指定地址内存

寄存器面板窗口(Register window)

显示cpu各寄存器的值。

栈面板窗口(Stack window)

显示栈内容,即ESP指向地址的内容

基础操作:

快捷键

功能

F2

设置/取消断点

F7

单步步进(按一下,执行一句指令,遇到call函数,进入函数)

F8

单步步进(按一下,执行一句指令,遇到call函数,不进入函数)

F9

运行

F4

运行到所点击的指令

CTRL+ F9

直到出现ret指令中断

这里还有一个比较重要的内容就是“各种断点”,但这里就不展开讲解,大家可以看一下链接内容:

https://blog.csdn.net/qq_38684512/article/details/86615482

其他反编译工具:

我在入门指北的第一篇中就有提到,我们做题或者学习的过程中会遇到由各种各样的语言写的程序。他们往往就需要各自的工具进行反编译。

这里我只提供工具名称,具体用法大家还是看百度吧(太多了……偷个懒):

 Java:jd-gui、jeb

 python:uncomplye6

 C# : C# REFLECTOR

 Basic:VB Decompiler Pro

……

2c26af1a19c249162917194efd36fe76.png

917ecbf8f39aea1194b63eb718b0cc7c.png

扫码关注我们

图文:云影安全

排版:云影安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值