《加密与解密》_3_静态调试技术_IDA_Pro

⍢⃝ ⍤⃝ ⍥⃝ ⍨⃝ ⌓̈⃝ ◡̈⃝ ⠒̫⃝ ʚ◡̈⃝ɞ ༛̥⃝ʺ̤

静态分析技术

1 文件类型分析

工具PEiD

程序开发语言检测:PEiD这类文件分析工具是利用特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码,利用这一点就可以识别程序是由何种语言编译的。

查壳的原理:被加密程序A处理过的程序B中会留下加密软件的相关信息,利用这一点就可以识别程序是被何种软件加密的。

两个查壳、程序编写语言的软件:PEiD、DIE

1.png

  • PEiD是根据特征码来识别壳、编写语言。
  • PEiD提供了一个扩展接口文件userdb.txt,用户可以自定义一些特征码,这样就可以识别新的文件类型了。签名的制作可以用Add Signature插件完成,必要时还要用0llyDbg等调试器配合进行修正。

有些外壳程序为了欺骗PEiD等文件识别软件,会将一些加壳信息去除,并伪造启动代码。例如,将入口代码改成与用VisualC++6.0所编程序入口处类似的代码,即可达到欺骗的目的。所以,文件识别工具给出的结果只能作为参考,至于文件是否被加壳处理过,要跟踪分析程序代码才能知道。

2 IDA Pro

IDA支持的文件类型非常丰富,除了常见的PE格式,还支持DOS、UNIX、Mac、Java、.NET等平台的文件格式。

IDA支持常见处理器平台上的软件产品,且导入被分析程序时IDA会自动识别被分析程序的格式。

IDA运行流程:

  1. IDA是按”区块”装载PE文件的,例如.text(代码块)、.data(数据块)、.rsrc(资源块)、.idata (输入表)和.edata(输出表)等。
  2. IDA反汇编所消耗的时间与程序大小及复杂程度有关,通常需要等待一段时间才能完成(第一次加载/调试过程idb文件被删除)。此过程分为两个阶段。
    • 第一阶段:将程序的代码和数据分开,分别标记函数并分析其参数调用,分析跳转、调用等指令关系并给标签赋值等。
    • 在第二阶段:如果IDA能够识别文件的编译类型就装载对应的编译器特征文件,然后给各函数赋名。
  3. 随后,IDA会创建一个数据库(保存在被调试程序所在目录下),其组件分别保序存在扩展名为.id0.id1.nam.til的4个文件里,这些文件的格式为IDA专用,在关闭当前项目下时,这4个文件将被存档为一个idb文件。一旦IDA创建了数据库,就不需要再访问这个可执行文件了,除非使用IDA的集成调试器调试这个可执行文件本身。再次分析该目标文件时,IDA只需要打开现有数据库,就会将界面恢复为上次关闭时的状态。

2.1 IDA远程调试配置PDB文件

  1. 找到IDA下远程服务端文件所在目录:/Users/alxxx/Documents/IDA_PRO_7/dbgsrv 下对应版本,因为要调试的目标文件是ntkrnlpa.exe,我选的是win32_remote.exe。将其复制到Win 7 Pro SP1的虚拟机中。

  2. 由于Win 7 Pro SP1已经安装了C:\Windows\Symbols,配置符号文件的环境变量:

    • 系统变量:在Path后添加C:\Apps\Symbols\exe\
    • 在用户变量下添加键值对:变量名:_NT_SYMBOL_PATH,变量值C:\Apps\Symbols\exe
  3. 将Win XP的ntkrnlpa.pdb复制到C:\Windows\Symbols\exe文件夹下。

  4. 然后双击运行win32_remote.exe

  5. 在IDA PRO中:File --> Load file --> PDB file --> 如下图1 --> 到Win 7中看win32_remote.exe给出的IP地址 --> 如下图2

    36.png

    37.png