W32DASM 静态分析Word文档下载推荐.docx
- 文档编号:21319055
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:47
- 大小:810.11KB
W32DASM 静态分析Word文档下载推荐.docx
《W32DASM 静态分析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《W32DASM 静态分析Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
在对程序进行完反编译以后,为了避免下一次再次对程序进行反编译,通常我们要通过“(O)反汇编-(S)保存反汇编文件或创建工程文件”菜单保存反编译后的内容。
在这里可以把反编译后的汇编代码保存成ASCII或者是alf项目文件。
这样在再一次打开这个文件的时候,就可以直接通过“(P)工程-(P)打开工程文件”菜单直接调用已经保存好的反编译的汇编代码,从而减少不必要的重复劳动。
如图:
保存后的文件被分别存为:
Notepad.alf和Notepad.wpj。
当我们需要打开所保存的工程文件的时候,我们就可以打开保存好的Notepad.wpj了:
1-1-2、对反汇编源代码的几个操作
1、“查找”菜单
通过查找菜单,可以根据自己的需要查找反编译后的汇编代码中的相关代码和字段。
当我们在动态调试的过程中发现某个地址是要重点分析的地方时,我们可以记录下相关代码或者地址,然后在W32DASM中的“(S)查找-(F)查找文本”的对话框中输入进行搜索,在对反汇编得到的代码量比较大或者相同代码比较多的时候,建议使用本方法。
比如:
某个软件试用期为30天,但是反汇编后在“(R)参考-(S)串式参考”中找不到相关信息,那么根据十进制30就是十六进制的1E来查找相关代码“0000001E.”,然后分析哪些代码段是自己需要的,具体例子我们将在后面的章节中学习到。
如果有多处相同代码,可以使用快捷键F3来进行连续的查找。
2、“转移”菜单
“转移”菜单主要是对反编译得到的汇编代码进行定位操作。
主要操作如下图所示:
A、“(C)转到代码头”(“GoToCodeStart”)菜单是将光标转移到由W32DASM得到的反编译后的文件的代码列表清单的汇编指令的开始。
在Notepad的反编译代码中,光标指向情况如下图:
B、“(P)程序入口处”(“GoTOProgramEntryPoint”)菜单是指将光标指向程序的入口点(EntryPoint),程序的入口点就是程序开始执行时候的代码地址,当我们用TRW2000等动态调试工具进行载入(Load)的时候,被拦截的光标点也就是在这里,所以称为是程序入口点。
C、“(G)转到页”(“GoToPage”)菜单主要是方便在反汇编后得到的代码的页面中跳转,当知道要分析的代码的页码后,在再一次查看的时候,就直接可以使用此菜单跳转到相应的页面,从而减少查找时间。
D、“(L)转到代码位置”(“GoToCodeLocation”)菜单是根据需要输入的代码的偏移地址,使光标跳转到相应位置上去。
如果输入的偏移地址值小于或者大于当前反汇编代码中的有效偏移代码值,程序将会自动取最接近的有效地址;
如果输入的偏移地址代码值在有效范围内但是没有精确值与之匹配,则最接近的有效偏移值将自动被选取。
3、“执行文本”菜单
执行文本菜单是根据光标当前所吃位置的代码给予执行的操作,主要是执行反汇编代码处的跳转、呼叫的文本代码,使光标跳转到相应的代码上,并且可以在执行后返回所执行的文本代码处。
能够实现的操作如下图所示:
(a)当光标在跳转类文本代码上的时候能够执行跳跃操作
(b)当光标在CALL语句文本代码上的时候能够执行呼叫操作
同样在执行了跳跃操作或者呼叫操作后,“执行文本”菜单中的“返回上一跳跃”和“返回上一呼叫”菜单将被激活,同时你会发现在跳转到的代码上被标记为红色,方便再次查阅。
4、“函数”菜单
“函数”菜单包括“导入”和“导出”两个菜单,这里我们简单介绍一下“导入”菜单。
执行“导入”命令后,W32DASM将会列出当前文件的导入(Import)函数的名称,当用鼠标左键双击相应的导入函数的时候,程序会自动将光标位置定位到第一次出现此函数的反编译代码上,如果程序中多次使用同一个函数,则每次双击,程序将自动移动到相应的代码上,直至循环。
如下图:
“导出”函数的执行和操作和“导入”函数类似,在这里需要提到的是:
一般在EXE文件中只有导入(Import)函数,而没有导出(Export)函数,但是在DLL文件中两者都有。
5、“参考”菜单
“参考”菜单包含“菜单参考”、“对话框参考”和“字符串数据参考”三部分。
“参考”菜单在我们对程序进行静态分析的时候使用的频率最为频繁。
在对程序进行静态分析和代码定位的时候,“字符串数据参考”菜单为我们提供了便利的条件,它列出了程序中相关的字串、对话信息,在进行程序的操作的时候好多的字串往往就可以在这里找到,从而进行快速的定位。
因为W32DASM是国外的软件,所以对程序中的中文字串支持不够好,为了提供对中文字串的支持,网络上的Cracker对程序进行了修改和完善,我们现在使用的由大老修改的W32DASM对中文字串支持就很好。
与“字符串数据参考”菜单相关的操作,我们将在后面的内容中用实例进行讲解。
除了上面的菜单外,我们还可以通过程序上面的工具按钮来操作,只要你把鼠标移动到相应的可操作按钮上,程序就自动给你功能提示。
在做静态分析的时候,初学的朋友往往对程序的代码的书写感到头疼,实际上W32DASM给出了一种简便的复制操作。
首先在你想要复制的代码段的开始代码行的前面点一下鼠标左键,这个时候你会看见,代码行的前面被标记了一个红色的点,然后再把鼠标移动到代码段的结束行的前面,按下键盘上的Shift键的同时,点击鼠标左键,这样,你想要选中的代码段就被标记为选中状态,然后使用快捷键Ctrl+C,就能把代码复制到剪帖版,接下来就可以把代码粘贴到记录的文本或者其他文档中了。
通过上面的学习,我们对W32DASM的基本功能有了了初步的认识,接下来的章节我们将给大家一些实际的例子,让大家来感受W32DASM的强大功能。
第二节可执行文件比较工具
这节我们先给大家介绍几个进行静态分析和破解的辅助工具。
在对程序进行破解或者说补丁的时候,我们需要对两个前后变化的程序进行比较,从而找出程序的不同点,然后做相应的补丁程序,这样做出来的破解文件不仅尺寸小,而且具有专业的形式和水准。
本节要介绍的对象是FileCompare32,CodeFusionWizardVersion3.0和Tola'
sPatchingEngine1.8。
其中FC32是一个对程序进行比较的专业程序,他能够对程序进行分析,然后给出内存地址和不同地方的机器代码,并写入文本文件中,对写补丁程序有很大帮助。
但是FC32有个缺点即使不能对文件尺寸大小不同的文件进行比较。
而CodeFusionWizardVersion3.0和Tola'
sPatchingEngine1.8就没有这个限制,可以对不同大小的文件进行比较。
5-2-1FileCompare32
FileCompare32能够对文件大小相同的文件进行比较,从中找出两个文件的不同,同时并能根据使用者的设定,以“补丁文件格式输出”或者是“可识别文件格式输出”方式,把两个文件的不同写如FC32.TXT文件,方便查看。
下面是本书配套光盘提供的由网友风飘雪汉化的版本界面图:
下面我对notepad.exe进行了复制,一份保存为notepad-1.exe不修改,另一份保存为notepad.exe,修改了几个地址。
首先我们先选择两个文件,并选择“补丁文件格式输出”:
执行完“比较”后,点击“显示结果”,我们将得到如下文本,分号后的汉字是我为了方便给大家注释的。
可以看到,使用“补丁文件格式输出”选项,得到的文本格式是:
地址-原机器码-修改后机器码(如上图所示)。
这样,在使用手动输入制作补丁的程序中就能根据上面的格式来分别填写和制作补丁了。
如果使用“可识别文件格式输出”,我们将得到下面的文本资料:
由上面的两个文本内容我们可以看出,在使用“可识别文件格式输出”的时候,我们能够很清晰的看到要修改的地址、机器码。
在以后制作补丁程序的时候,推荐使用“可识别文件格式输出”格式比较不同文件,然后根据得到的文件制作补丁。
5-2-2CodeFusionWizardVersion3.0
相对于FileCompare32来说,CodeFusion不仅能对相同大小文件进行比较,同时他还能对文件大小不同的文件进行比较,并且通过CodeFusion的的向导制作对原始文件进行修改的补丁文件。
下面来简单认识一下CodeFusion的界面和功能。
首先我们来看看CodeFusion的界面组成,这里我们采用的是网络上流行的汉化版本。
通过CodeFusion的向导,我们可以一步步的编辑和制作我们需要的补丁文件。
我们可以根据自己的喜好,定义补丁的窗口标题、名字、文本信息,同时还能够制作文件上的超级连接,然后把编辑好的内容保存为默认文本。
下面咱们来看一下CodeFusion的文件比较功能。
首先进入CodeFusion的第二个界面,然后在要补丁的文件窗口中右上角的绿色“+”号,添加需要补丁的原始文件。
选定以后,程序会自动分析文件的大小,产生日期,和CRC32校验码,当然我们可以自己定义显示信息。
然后,再选择已经修改好的文件,这时会出现下面的对话框:
对话框中有四个选项:
文件比较、字节补贴偏移、替换&
替换和截短数据偏移。
通常如果手中有原始文件和修改后的文件,可以选择“文件比较”方式,让程序自动比较两个文件的不同;
如果手中只有原始文件和知道要修改的字节偏移地址和代码,可以选择“字节补贴偏移”或者“查找替换”方式来制作文件补丁。
至于“截短数据偏移”,是指根据输入的一个截短的偏移地址对程序进行修改和补丁。
选择了“文件比较”后,指定修改后的文件,然后单击“比较(C)”按钮后,程序就会把两个文件不同的地方列举出来,包括偏移地址、修改后文件的数据、字节数尺寸和原始文件的数据。
当然,也可以选择”设置为查找&
替换”选项,来定位程序要查找和修改的地址和数据。
确认要补丁和修改的文件的代码和地址没有错误以后,点击“确定”按钮,程序显示出对文件要补丁的地址和数据,然后点击“下一步”进入补丁程序的最后制作进程:
为了保护和减小制作的补丁文件,我们可以选择加密和压缩处理,同时可以指定压缩器。
选项设置好后,可以执行“创建Win32可执行文件(M)”,选定存放目录和指定文件名称,从而完成补丁文件的制作。
当点击“结束”按钮退出的时候,程序回提示是否把刚才所做的操作存放为模板以备后用。
CodeFusion除了能对相同尺寸的同一文件进行比较以外,还可以对不同尺寸、不同名字、不同目录、不同磁盘的单个或多个文件进行补丁操作。
5-2-3Tola'
sPatchingEngine1.8
Tola'
sPatchingEngine1.8是一个小巧的补丁制作工具,支持“偏移量”和“查找&
替换”两种补丁方式。
其中“偏移量”方式适合制作程序的升级、汉化补丁;
“查找&
替换”方式适合制作破解补丁,生成的补丁大小仅为10K左右。
支持自定义图标,把你喜欢的图标作为你发布的补丁程序的显示图标。
和CodeFusion类似,我们可以编辑自己制作的补丁的信息:
(由于窗口界面太宽,我们这里分割他为两部分,注意,其实是一个水平界面上的)
如果你觉得子定义图标中的图标不很理想,你可以点击上面的图标,换成你喜欢的图标文件;
同时,可以在“选项”中设定补丁文件中的超级连接内容。
在完成补丁文件的制作之前,你可以通过预览选项来查看制作后补丁的界面,如图:
如果不满意,可以重新编辑和调整,直到满意为止。
下面是生成的一个补丁的图标和执行后的界面:
在使用制作好的补丁之前,最好把补丁文件拷贝到要补丁的文件所在的目录,然后执行他,如果不放在同一个目录下,会出现下面的提示,我们可以手动指定要补丁的文件的位置:
指定要修改的文件地址和名称:
然后就可以完成对程序的补丁操作了。
建议大家在使用补丁文件的时候,选择上“备份”原文件的选项,以方便修改错误以后恢复原文件。
第三节可执行文件修改工具
在对文件编辑和修改的时候,除了补丁方式,我们还可以使用专门的工具软件来修改可执行文件,比方说利用Hiew和Ultraedit对可执行文件随时进行代码的修改,利用ExeScope来对文件资源和界面进行修改。
5-3-1Hiew6.81
Hiew是我们在修改可执行文件的时候最常用到的软件,他可以对文件进行反编译,同时可以通过偏移量来定位代码位置。
Hiew是个功能强大的工具,但是在我们对程序进行破解的过程中,我们一般只用到他的反编译,定位和修改功能。
当执行Hiew后,处于文件列表状态时,按下F1键可以获取个功能键的帮助信息,如图:
当我们需要对文件进行修改的时候,首先我们要选定要修改的文件,然后回车,文件将以默认的Text方式显示文件内容,如下图:
Hiew可以以三种格式显示反编译后的文件内容,除了上面的Text格式外,还有:
Hex和Decode格式。
我们通常在使用偏移量定位后,选择Decode格式显示反编译后的文件内容:
通过上图可以看出,反编译后的代码非常直观和明了,对于对照通过偏移量找到的代码和W32DSAM反编译的文件代码,我们可以准确定位,以防止出错。
那么如何选择上面的显示方式呢?
当打开选定的文件后,按下F1,可以看到反编译状态下的各键的功能:
在操作过程中,我们用F4来选择显示模式,用F5输入偏移地址来定位,使用F3和F2进行代码的修改,需要注意的是,F3修改是对代码的机器码进行修改,而F2是对汇编代码进行修改,在实际过程中我们可以选择或者配合使用。
修改过程中,各键功能又有所变化:
修改完后,使用F9对修改操作进行保存,然后退出Hiew即可。
在这里,我们提醒大家要随时注意各功能键的变化。
5-3-2UltraEdit9.0
在对程序进行修改的时候,我们也经常使用UltraEdit来对文件进行查找和替换。
一般来说,当我们知道需要修改的文件与原始文件不同地方的机器码时,我们可以通过UltraEdit打开要修改的文件,然后通过“搜索”菜单中的“替换”操作来修改文件:
查找和替换的时候,可以根据文字要求操作。
另外除了对16进制的替换外,我们还可以对ASCII进行查找和替换操作:
由于我们的任务是简单介绍给大家如何使用UltraEdit来修改文件,所以,关于UltraEdit的其他用途,请参考软件自带的说明书。
5-3-3ExeScope6.20
在对程序进行修改的时候,除了对代码修改,我们还可以对程序的界面和资源进行修改,ExeScope就是这样的一个工具,他可以让我们对没有加密或者加壳的软件资源等进行修改,我们这里提供的是网络上流行的张学思汉化版本6.20。
当我们要对一个文件的资源进行修改的时候,先用ExeScope打开文件,以Windows98自带的NotePadc.exe为例,如下图所示:
展开各级菜单,我们就可以对要修改的资源进行修改。
一般说来,要修改的地方一般都在“资源”菜单下。
对于菜单项,可以直接在右侧的窗口原文字上进行修改;
对于对话框等资源,可以在选定相应的资源后,再在上面“标题”中做修改,如果你认为修改后,特别是把英文资源改成汉字资源的时候,字体大小不合适,可以在对字体进行修改:
大家注意在上图“样式”对话框中的“可见”、“禁用”选项,有些时候,软件作者为了不让某个选项或者按钮不显示或者不准使用的时候,通常要对上面的两项进行设置,有时候,在对付有功能限制的简单程序的时候,可以通过这个方法来让按钮或者菜单发生作用。
如你想在修改后,不退出ExeScope就预览修改的结果,或者要移动某个按钮或者图片的位置,还可以通过对你正编辑的“对话框”资源用鼠标双击,这样就能看到你正在修改的资源,同时也能用鼠标移动和编辑图片、对话框的资源:
如果我们要改变软件中的某个图片资源,我们可以先选择目标图片资源,然后通过“导出”菜单把文件从文件提取出来,然后我们可以对文件进行编辑或者找相应尺寸的图片文件来替换原有图片,再使用“导入”操作即可:
另外,如果要先把软件资源提取出来,然后保存成通用资源.rc,这样就可以用其他软件来进行修改和编辑,再用其他软件导入到软件中,比如ResHack。
可执行文件修改工具很多,大家可以到网络上找相应的程序并加以研究和学习。
推荐大家到(汉化新世纪)站点去搜索。
第四节静态分析实例
通过以上几节的简单学习,我们对W32DASM等静态分析工具有了大致了解,现在我们就开始利用以上几节的知识来学习一下如何通过静态分析破解软件。
为了避免软件版权纠纷,我们这里的实例都以网络上破解爱好者制作的Crackmes为主。
5-4-1CD-Check光盘检测保护
相应程序为配套光盘中crackmes/haque-abex1.zip。
abexcm1.exe是一个关于CD光盘保护的crackme,这里我们来看一下,如何破解这个程序。
首先用FI检测程序是否被压缩或者加壳。
经过检测,程序没有加壳。
拷贝abexcm1.exe为cr-abexcm1.exe,使用w32dasm对程序cr-abexcm1.exe进行反编译,反编译后备用。
先执行abexcm1.exe,分别看到下面两个对话窗口:
(a)破解要求,要求程序把你的HD当作CD-Rom(b)错误提示
看到了出错的提示“Nah…ThisisnotaCD-RomDrive!
”,然后我们查看反编译后的程序的“字符串数据参考菜单”,在“Nah…ThisisnotaCD-RomDrive!
”上双击鼠标左键,程序自动定位字符串在反编译后的代码中的位置:
//***********************程序入口点**************
:
004010006A00push00000000
004010026800204000push00402000
*PossibleStringDataReffromDataObj->
"
MakemethinkyourHDisaCD-Rom."
|;
//-------程序破解要求
004010076812204000push00402012
0040100C6A00push00000000
*ReferenceTo:
USER32.MessageBoxA,Ord:
0000h
|
0040100EE84E000000Call00401061
c:
\"
;
//-----让程序认为你的C盘是你的CD-Rom
004010136894204000push00402094
KERNEL32.GetDriveTypeA,Ord:
0000h;
//----获取驱动器类型
00401018E838000000Call00401055
0040101D46incesi
0040101E48deceax
0040101FEB00jmp00401021
*Referencedbya(U)nconditionalor(C)onditionalJumpatAddress:
|:
0040101F(U)
|
0040102146incesi
0040102246incesi
0040102348deceax
004010243BC6cmpeax,esi;
//-比较是否是CD-Rom,是就跳。
004010267415je0040103D;
//--看看这里跳到哪里去了。
004010286A00push00000000
Error"
//---错误句柄
0040102A6835204000push00402035
Nah...ThisisnotaCD-ROMDrive!
//-----错误的字符串,往上看代码。
0040102F683B204000push0040203B
004010346A00push00000000
//----对话框
00401036E826000000Call00401061
0040103BEB13jmp00401050
00401026(C);
//--跳到这里来了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- W32DASM 静态分析 静态 分析