OllyScript 脚本之 Career 和心声 公告如果你觉得有人语言挑衅,请点每帖右上角的“举报”按钮!kanxue 5 2006-09-13 20:53:55 第四课 静态分析技术 所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。
目前,大多 数软件在设计时,都采用了人机对话方式。
所谓人机对话,即在软件运行过程中,需要由 用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。
而在执行完某一段 程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现 错误,或者提示用户进行下一步工作的帮助信息。
为此,如果我们对静态反汇编出来的程 坛主 序清单进行阅读,可了解软件的编程思路,以便顺利破解。
常用的静态分析工具有 W32D ASM、C32Asm 和 IDA Pro 等。
资 料:注册日期: Apr 4.1 认识 PE 格式2004帖子: 10663 在 Win32 平台上(包括 Windows 95/98/ME/NT/2000/XP/2003/CE),可执行文件是 PE(P精华: 7 ortable Executable)格式。
PE 文件使用的是一个平面地址空间,所有代码和数据都被现金: 3393 Kx 合并在一起,组成一个很大的结构。
文件的内容被分割为不同的区块(Section,又称区致谢数: 26 段、节等),块中包含代码或数据。
获感谢文章数:24获会员感谢数:185刚接触这块的朋友只需要简单了解一下 PE 格式,更具体的 PE 格式请参考脱壳基础知识入门(2006 年版)PE 相关名词解释如下:1.入口点(Entry Point)程序在执行时的第一行代码的地址应该就是这个值。
2.文件偏移地址(File Offset)PE 文件在磁盘上储存时,各数据的地址称文件偏移地址(File Offset)。
用十六进制工具(例如 Hex Workshop、WinHex 等)打开文件显示的地址就是文件偏移地址。
3.虚拟地址(Virtual Address,VA)由于 Windows 程序是运行在 386 保护模式下,在保护模式下,程序访问存储器所使用的逻辑地址称为虚拟地址(Virual Address,VA)。
与实地址模式下的分段地址类似,虚拟地址也可写成quot段:偏移量quot的形式,这里的段是指段选择器。
4.基地址(ImageBase)文件执行时将被映像到指定内存地址中,这个初始内存地址称为基址(ImageBase)。
在Windows NT 中,缺省的值是 10000h;对于 DLLs,缺省值为 400000h。
在 Windows 9x 中,10000h 不能用来装入 32 位的执行文件,因为该地址处于所有进程共享的线性地址区域,因此 Microsoft 将 Win32 可执行文件的缺省基地址改变为 400000h。
5.相对虚拟地址相对虚拟地址(Relative Virual Address,RVA)表示此段代码在内存中相对于基地址的偏移。
即:相对虚拟地址RVA虚拟地址(VA)-基址(ImageBase)。
4.2 虚拟地址和偏移量转换 在 OllyDBGIDA 和 W32Dasm 下显示的地址值是虚拟地址(Virual Address,VA)。
而十六进制工具里,如:Hiew、Hex Workshop 等显示的地址就是文件地址,称之为偏移量(File offset 。
其转换原理是因为 PE 文件在磁盘上的数据结构与在内存中的结构是一致的,如下图:具体见:http://bbs.pediy.com/showthread.phpsampthreadid18022 在实际操作时,使用 LordPE 等工具很容易进行 File offset 与 VA 的转换。
LordPE打开目标文件,点击 FLC 按钮,打开如下图的对话框,填入相应地址,点击 DO 按钮即可转换:4.3 文件类型分析 文件分析是静态分析程序的第一步,通过相关工具显示欲调试文件的信息,如它是用什么语言写的,是否加壳等。
常用的文件分析工具有 PEID,FileInfo 等。
有关壳的相关知识等入门后,再参考相关教学,如 脱壳基础知识入门(2006 年版) 。
如果查到文件有壳,此时静态分析是没意义的,但可以用 OD 动态调试,分析程序算法。
1.PEiDPEiD 的 GUI 界面操作非常方便直观。
它的原理是利用查特征串搜索来完成识别工作的。
各种开发语言都有固定的启动代码部分,利用这点就可识别出是何种语言编编译的。
同样,不同的壳也有其特征码,利用这点就可识别是被何种壳所加密。
下面 PEiD 识别出这个软件是用 Asprotect 1.2x 加的壳。
2.FileInfoFileInfo(简称 Fi)另一款不错的文件检测工具。
FI 的具体用法4.4 W32Dasm 简介W32Dasm 简介4.5 IDA pro 操作IDA 简易教程IDA 里的中文字串4.6 keymaker 内存注册机Q:什么是某个软件的中段地址,指令长度,第一字节,这些数据怎么得到,这些数据在 内存注册机中怎么应用? A: 青色代表着注册码的保存模式 绿色的是中断地址,中断地址一般选择注册码保存模式的下一句,或下几句地址,但必须 保证程序中断到这个地址时注册码保存的值没有被任何东西修改或改变。
如下面的例子, 中断地址可以选在 00401205 和 00401207,但不能选在 0040120C 这个地址,因为 004012 07 这个 Call 过后会修改 .
上一篇:
图形编程基础MFC
下一篇:
那些令你为之触动的好句子,感慨万分