《加密与解密》_3_静态调试技术_IDA_Pro
⍢⃝ ⍤⃝ ⍥⃝ ⍨⃝ ⌓̈⃝ ◡̈⃝ ⠒̫⃝ ʚ◡̈⃝ɞ ༛̥⃝ʺ̤
静态分析技术
1 文件类型分析
工具PEiD
程序开发语言检测:PEiD这类文件分析工具是利用特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码,利用这一点就可以识别程序是由何种语言编译的。
查壳的原理:被加密程序A处理过的程序B中会留下加密软件的相关信息,利用这一点就可以识别程序是被何种软件加密的。
两个查壳、程序编写语言的软件:PEiD、DIE
- PEiD是根据特征码来识别壳、编写语言。
- PEiD提供了一个扩展接口文件
userdb.txt
,用户可以自定义一些特征码,这样就可以识别新的文件类型了。签名的制作可以用Add Signature插件完成,必要时还要用0llyDbg等调试器配合进行修正。
有些外壳程序为了欺骗PEiD等文件识别软件,会将一些加壳信息去除,并伪造启动代码。例如,将入口代码改成与用VisualC++6.0所编程序入口处类似的代码,即可达到欺骗的目的。所以,文件识别工具给出的结果只能作为参考,至于文件是否被加壳处理过,要跟踪分析程序代码才能知道。
2 IDA Pro
IDA支持的文件类型非常丰富,除了常见的PE格式,还支持DOS、UNIX、Mac、Java、.NET等平台的文件格式。
IDA支持常见处理器平台上的软件产品,且导入被分析程序时IDA会自动识别被分析程序的格式。
IDA运行流程:
- IDA是按”区块”装载PE文件的,例如.text(代码块)、.data(数据块)、.rsrc(资源块)、.idata (输入表)和.edata(输出表)等。
- IDA反汇编所消耗的时间与程序大小及复杂程度有关,通常需要等待一段时间才能完成(第一次加载/调试过程
idb
文件被删除)。此过程分为两个阶段。- 第一阶段:将程序的代码和数据分开,分别标记函数并分析其参数调用,分析跳转、调用等指令关系并给标签赋值等。
- 在第二阶段:如果IDA能够识别文件的编译类型就装载对应的编译器特征文件,然后给各函数赋名。
- 随后,IDA会创建一个数据库(保存在被调试程序所在目录下),其组件分别保序存在扩展名为
.id0
、.id1
、.nam
和.til
的4个文件里,这些文件的格式为IDA专用,在关闭当前项目下时,这4个文件将被存档为一个idb
文件。一旦IDA创建了数据库,就不需要再访问这个可执行文件了,除非使用IDA的集成调试器调试这个可执行文件本身。再次分析该目标文件时,IDA只需要打开现有数据库,就会将界面恢复为上次关闭时的状态。
2.1 IDA远程调试配置PDB文件
找到IDA下远程服务端文件所在目录:
/Users/alxxx/Documents/IDA_PRO_7/dbgsrv
下对应版本,因为要调试的目标文件是ntkrnlpa.exe
,我选的是win32_remote.exe
。将其复制到Win 7 Pro SP1的虚拟机中。由于Win 7 Pro SP1已经安装了
C:\Windows\Symbols
,配置符号文件的环境变量:- 系统变量:在
Path
后添加C:\Apps\Symbols\exe\
。 - 在用户变量下添加键值对:变量名:
_NT_SYMBOL_PATH
,变量值C:\Apps\Symbols\exe
。
- 系统变量:在
将Win XP的
ntkrnlpa.pdb
复制到C:\Windows\Symbols\exe
文件夹下。然后双击运行
win32_remote.exe
。在IDA PRO中:
File --> Load file --> PDB file --> 如下图1 --> 到Win 7中看win32_remote.exe给出的IP地址 --> 如下图2
。