快捷键
<img />技术小贴
Tab 汇编指令与伪代码之间切换
G 搜索地址或者符号
N 重命名
X 交叉引用
space 切换反汇编窗口(列表视图&图形视图)
Ctrl+S jmp to segment
Alt+t 文本搜索
ALT+B 搜索16进制
Shift + F12 搜索字符串
R/H 10进制 和 十六进制 进行转换
Ctrl + E 查看函数模板表
shift + F9 打开structure
FN+PgDn 创建结构体
d 创建结构体成员
y 更改结构体类型
ESC 退到上一个操作地址
/ 注释
CTRL+ALT+B 打开断点列表
F7 单步步入
F8 单步步过
CTRL+F7 运行到函数返回地址
F4 运行到光标处
反汇编工具
分类工具
file命令
file 试图通过检查文件中的某些特定字段以及设法判断该文件的结构是否符合某种已知的文件格式等方式来确认文件的类型。
多数情况下,它**搜索某些文件类型所特有的标签值(通常称为幻数),幻数是一些文件格式规范所要求的特殊标签值,它表示文件符合这种规范。
<img />
file 能够识别大量的文件格式,包括数种 ASCII文本文件、各种可执行文件和数据文件。
file执行的幻数检查由幻数文件(magic file)所包含的规则控制。幻数文件的默认位置因操作系统而异,常见的位置包括/usr/share/file/magic 、 /usr/share/misc/magic和/etc/magic。
在某些情况下, file 还能够辨别某一指定文件类型中的细微变化。以下代码证实了 file 不仅能够识别几种不同的 ELF二进制文件,而且还提供了有关二进制文件如何链接(静态或动态)以及是否去除了符号等信息。
<img />
你可以使用一个十六进制文件编辑器将任何文件的前 4字节修改为 Java的幻数序列 CA FE BA BE ,自己证实一下上述情况。这时, file **将这个新修改的文件错误地识别为已编译的 Java类数据。同样,一个仅包含 MZ 这两个字符的文本文件**被误认为是一个 MS-DOS 可执行文件。
在逆向工程过程中,绝不要完全相信任何工具所提供的结果,除非该结果得到其他几款工具和手动分析的确认,这是一个良好的习惯。
PE Tools
PE Tools是一组用于分析 Windows系统中正在运行的进程和可执行文件的工具。
在进程列表中,用户可以将一个进程的内存映像转储到某个文件中,也可以使用 PE Sniffer实用工具确定可执行文件由何种编译器构建,或者该文件是否经过某种已知的模糊实用工具的模糊处理。
Tools菜单提供了分析磁**文件的类似选项。另外,用户还可以使用内嵌的 PE Editor实用工具查看 PE文件头字段,使用该工具还可以方便地修改任何文件头的值。通常,如果想要从一个文件的模糊版本重建一个有效的 PE,就需要修改 PE文件头。
二进制文件模糊技术
模糊(obfuscation)指任何掩盖真实意图的行为。应用于可执行文件时,模糊则是指任何掩盖程序真实行为的行为。出于各种原因,程序员可能**采用模糊技术,如保护专有算法及掩盖恶意意图。
几乎所有的恶意软件都采用了某种模糊技术,以防止人们对其进行分析。有大量模糊工具可供程序员使用,帮助他们创建模糊程序。
PEiD
PEiD是另一款 Windows工具,它主要用于识别构建某一特定 Windows PE二进制文件所使用的编译器,并确定任何用于模糊 Windows PE二进制文件的工具。
PEiD的许多其他功能与 PE Tools的功能相同,包括显示 PE文件头信息摘要、收集有关正在运行的进程的信息、执行基本的反汇编等。
摘要工具
由于我们的目标是对二进制程序文件进行逆向工程,因此,在对文件进行初步分类后,需要用更高级的工具来提取详尽的信息。
nm
将源文件编译成目标文件时,编译器必须嵌入一些全局(外部)符号的位置信息,以便链接器在组合目标文件以创建可执行文件时,能够解析对这些符号的引用。
除非被告知要去除最终的可执行文件中的符号,否则,链接器通常**将目标文件中的符号带入最终的可执行文件中。
根据nm 手册的描述,这一实用工具的作用是“列举目标文件中的符号”。
<img />
从中可以看到, nm 列出了每一个符号以及与符号有关的一些信息。其中的字母表示所列举
的符号的类型。前面的例子中出现了以下字母,下面逐一解释。
U ,未定义符号,通常为外部符号引用。
T ,在文本部分定义的符号,通常为函数名称。
t ,在文本部分定义的局部符号。在 C程序中,这个符号通常等同于一个静态函数。
D ,已初始化的数据值。
C ,未初始化的数据值。
说明:大写字母表示全局符号,小写字母则表示局部符号。
原创文章,作者:小嵘源码,如若转载,请注明出处:https://www.lcpttec.com/ida/