赞
踩
在逆向分析的时候有静态分析和动态分析两种,静态分析即为不运行程序,直接分析程序文件中的机器指令,去分析程序的底层
运行逻辑和算法。而动态分析是将程序运行起来,在程序运行的同时,对程序进行下断点,查看内存等一系列操作去动态的查看
程序运行中的一些数据的变化,去发现在静态调试时所遗漏或难以分析的问题,
在实际应用中通常是动态分析和静态分析两者结合或单独运用,用最快的速度达到我们的目的
静态分析时使用到的是ida,动态分析的时候用的是ollydbg,接下来就对这两种工具的功能及作用进行基本的介绍
打开后进入主界面有一行色带,不同颜色代表程序代码的不同的区间
库函数
常规函数
指令
数据
未知
外部符号
在下面左侧有一栏函数列表,该程序所用的函数名称会列在其中,一般程序入口为main()函数(按ctrl+e键可以通过工具的功能快
速找到main函数,省下手动寻找的时间)
按ctrl+F键可以在函数列表中进行搜索
在右侧有不同的功能视图
打开ida是默认打开以下窗口
这些窗口依次为反汇编窗口、十六进制窗口,结构体、枚举、导入(使用的模块、函数)、导出
在第一个反汇编窗口上有两种呈现方式文本形式,与图形形式(可以按下ctrl键加鼠标滚轮调节大小),可按空格进行切换
这里开始呈现的是反汇编代码,按下F5可以打开其对应的伪代码界面(伪c代码),方便阅读,将一些汇编语言编写的代码转变为
容易读懂的代码,但有时会将一些代码转变的比较难以读懂
下边提供一些ida中的一些宏定义字符
https://blog.csdn.net/bluestar628/article/details/78428868
第二个为十六进制窗口,可查看该文件不同地址的十六进制数,及其对应的字符,之后的结构体和枚举暂时用不到,先不做介绍
后面的导入界面,中会列出本文件所引用的计算机函数,在逆向工程的初学阶段,只需知道有这个界面就行,学到一定程度,这
个窗口将发挥作用,这个工具中还有许多的工具窗口,为逆向分析提供极大便利
中文名称如下
初学阶段经常用到string窗口,即字符串窗口,在一些简单的ctf的reverse(逆向)题中,可以通过查找flag字符串直接找到,亦可以使用alt+T快捷键去搜索字符串main
ollydbg是一个动态调试软件,可以在程序运行的同时对程序进行分析,逐步跟随,分析程序运行的过程,先看这个工具的主界面
这个是CPU界面,也是最常使用的界面
反汇编窗口,有四列,分别为地址列,机器码(可用鼠标左键双击设置断点,或快捷键F2),汇编指令,注释(当工具加上自动注释的插件,会附带一些注释,快捷键;)
信息窗口,会显示与执行指令相关的寄存器的值,api函数,跳转提示
数据窗口,可以以十六进制显示文件在内存中的数据,可以通过快捷键 ctrl+G 跟随某个函数,在这个窗口右键可以更改显示方式
,这里进入软件具体查看
寄存器窗口,可以显示CPU中的寄存器在执行某一条指令时的值
堆栈窗口,显示了堆栈里的内容,即ESP指向的地址的内容,各种API函数和子程序利用它传递参数和变量
下面说一下ollydbg中的一些功能键
ctrl+F2重新运行该程序
F2: 设置断点或双击HEX数据列
F7: 单步步入,遇到CALL指令会进入其中,进入后会停在子程序第一条指令前,加上Ctrl键可以进行自动运行,F8相同,按下F7或F8停止
F8: 单步步过,遇到CALL指令会直接跳过,而不进入调用的地址
F4: 运行到选定位置,直接运行到光标所在位置暂停
F9: 运行,按下这个件如果没有设置相应断点的话,被调式的程序将直接开始运行
Ctrl+F9: 执行到返回,此命令在执行到一个ret指令时暂停,
Alt+F9: 执行到用户代码,可用于从系统领空快速返回到我们调试的程序领空
前面提到了断点,然后在这个工具中存在内存断点,硬件断点,int 3断点(就是按F2设置的断点)
同样像ida一样ollydbg也可以搜索字符串来找到我们所需要找到的内存地址
在反汇编窗口右键
这里可以查看程序中的字符
双击会自动定位到字符出现的地址
通过这个程序可以对调试程序的运行逻辑进行修改,就可以达到做外挂的目的,或简单修改一些程序的数据,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。