您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第1章WindowsPE开发环境.
WindowsPE权威指南作者戚利出版社机械工业出版社WindowsPE什么是PE?我们讨论的不是WindowsPreinstallationEnvironment,Windows预安装环境。而是PE:PortableExecutableFileFormat(可移植的执行体)。Windows平台主流可执行文件格式。.exe与.dll文件都是PE格式。WindowsPE为什么研究PE了解WindowsPE文件结构加密与解密、软件汉化、逆向工程、反病毒等安全领域的应用WindowsPE开发语言:MASM32源程序的编辑器:记事本notepad动态调试器OllyDBG静态调试器W32DASM字节码的阅读器和编辑器FlexHex、WinhexPE文件查看修改工具PEditor本章介绍学习WindowsPE需要的软件开发环境WindowsPE开发环境开发语言MASM32搭建学习WindowsPE需要的软件开发环境基于MASM32的汇编程序更接近于系统的底层,灵活、强大生成的可执行PE文件体积小,速度快...:none?开发语言MASM32WindowsPE开发环境includewindows.incincludeuser32.incincludelibuser32.libincludekernel32.incincludelibkernel32.lib引入外部的动态链接库,这些库里有本程序需要的函数-代码重用开发语言MASM32WindowsPE开发环境;数据段.dataszTextdb'HelloWorld',0;要显示的信息;代码段.codestart:invokeMessageBox,NULL,offsetszText,NULL,MB_OKinvokeExitProcess,NULLendstart开发语言MASM32WindowsPE开发环境invokeMessageBox,NULL,offsetszText,NULL,MB_OKInvoke-并不是80386处理器的指令,而是一个MASM编译器的伪指令调用WINDOWSAPI,或调用汇编子程序。格式为invoke程序名,参数1,参数2,…参数2先入堆栈,参数1再入堆栈,以此类推如invokemysubpro,eax,ecx编译器会编译成下面这个模样:pushecxpusheaxcallmysubpro开发语言MASM32WindowsPE开发环境invokeMessageBox,NULL,offsetszText,NULL,MB_OKWin32程序是构筑在Win32API基础上的。在Win32API中,包括了大量的函数、结构和消息等,它不仅为应用程序所调用,也是Windows自身的一部分,Windows自身的运行也调用这些API函数。MessageBoxwin32API函数,由user32.dll提供MessageBoxA-窄字符:ANSIMessageBoxW-宽字符:unicode开发语言MASM32WindowsPE开发环境Microsoft-《MicrosoftWin32Programmer‘sReference》中定义了常用API的参数和函数声明,消息框函数的声明:intMessageBox(HWNDhWnd,//handletoownerwindow窗口句柄LPCTSTRlpText,//textinmessagebox要显示的字符串地址LPCTSTRlpCaption,//messageboxtitle标题字符串地址UINTuType//messageboxstyle消息框类型);最后还有一句说明:Library:UseUser32.lib-说明了这个函数包括在User32.dll中invokeMessageBox,NULL,offsetszText,NULL,MB_OK开发语言MASM32WindowsPE开发环境研究EXE文件内部指令跳转、病毒分析、逆向工程调试软件OllyDBG-ODWindowsPE开发环境1、指令集指令解释区4、栈区2、寄存器及运行状态区3、代码和数据字节码区该位置处的数据是一个内存地址,该地址指向了kernel32.dll动态链接库中函数ExitProcess的真实位置。WindowsPE开发环境调试软件OllyDBG-OD指令集指令解释区包含了所有的32位寄存器:eax、ebx、ecx、esi、edi等ebp栈基地址指针esp栈顶指针eip指向下一条要执行的指令的位置WindowsPE开发环境调试软件OllyDBG-OD寄存器及运行状态区指定内存范围的字节码WindowsPE开发环境调试软件OllyDBG-OD代码和数据字节码区反映了当前栈的分配情况及栈在程序与栈在程序运行过程中的变化情况。WindowsPE开发环境调试软件OllyDBG-OD栈区F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到CALL等子程序不进入其代码。F7:单步步入。功能同单步步过(F8)类似,区别是遇到CALL等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。WindowsPE开发环境调试软件OllyDBG-ODHelloWorld.exe的跟踪执行左右分别是指令执行后栈的变化情况WindowsPE开发环境调试软件OllyDBG-OD利用F7执行指令EIP发生变化了吗?PUSHhellowor.00403000即指向szTextWindowsPE开发环境调试软件OllyDBG-OD继续call指令处使用F8,不会内部跟踪该函数,直接给出结果。WindowsPE开发环境调试软件OllyDBG-ODF8单步步过00402000开始的1000H为.rdata区,输入表。查看这部分内容。WindowsPE开发环境调试软件OllyDBG-OD是一个地址0X7545BC9A也就是ExitProcess函数的入口EXE文件被装载到内存后的部分结构WindowsPE开发环境调试软件OllyDBG-ODEXE文件对目标EXE文件进行修改将显示信息HelloWorld更改为GoodMorningWindowsPE开发环境调试软件OllyDBG-OD修改EXE文件字节码WindowsPE开发环境调试软件W32DASMWindowsPE开发环境十六进制编辑软件FlexHex破解软件注册-思路左:破解前右:破解后WindowsPE开发环境破解实例-U盘监控器运行软件,获取与破解有关的提示信息提示-注册失败WindowsPE开发环境破解实例-U盘监控器利用FlexHEX获取“注册失败!”字符串的文件偏移地址。0X00081A79WindowsPE开发环境破解实例-U盘监控器以上是打开静态的EXE文件,一旦EXE文件运行,也就是载入内存后,该字符串的地址就是内存地址了。内存地址=0X00400000+0X00081A79=0X00481A79在OD中搜索这个常量-内存地址为0X00405D2DWindowsPE开发环境破解实例-U盘监控器-OD中搜索用到MessageboxA函数,以此为线索,发现红框内的提示:和一个0X00405CD2处jump有关WindowsPE开发环境破解实例-U盘监控器-W32DASM找判断语句的位置到0X00405CD2处,果然是一个jg,也就是说注册出错会给出提示失败的消息框。所以将指令改为jl,使得判断条件刚好相反。WindowsPE开发环境破解实例-U盘监控器-W32DASM找判断语句的位置原jg指令如下图WindowsPE开发环境破解实例-U盘监控器-OD修改为jl指令WindowsPE开发环境破解实例-U盘监控器-重新测试修改成功
本文标题:第1章WindowsPE开发环境.
链接地址:https://www.777doc.com/doc-2153968 .html