Windows PE 第一章开发环境和基本工具使用
第一章 Windows PE
基本工具
1.1开发语言MASM32
1.1.1设置开发环境
这个不细说了,我在整理Intel汇编的时候详细的说了环境搭建以及细节。地址是:http://blog.csdn.net/u013761036/article/details/52186683
1.1.2 开发第一个源程序HelloWorld.
这个也不多解释,我直接写了个简单例子:
;-------------------------------------
;功能:测试OD用的Hello
World程序
;作者:Act-Code
;日期:2016.9.1
;-------------------------------------
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib user32.lib
includelib kernel32.lib
.data
szText db "HelloWorld" ,0
.code
main proc
invoke MessageBox ,NULL ,addr szText ,addr szText ,MB_OK
invoke ExitProcess ,0
main endp
end main
运行结果:
1.2 调试软件OllyDBG
OD是破解常用软件之一,我们可以通过它来调试了解开发该程序的基本思路,调试是逆向工程必须掌握的一门技术。
下面调试上面的那个HelloWorld.exe来简单介绍下OD.
主界面(各种DIY版本比较多,我用的这个是小伙伴给的 吾爱破解上的)
一:
(1)指令及指令解释区;
该区域位于整个界面的左上角,共包含四列。分别为指令所在的内存地址、指令字节码、反汇编后的指令语句,以及指令相关的注释。OD的强大之处在于,它将许多难懂的指令字节码反解释成了汇编指令,并附以形象的说明。
(2)寄存器及运行状态区;
该区域位于整个界面的右上角,包含了所有的32位寄存器,如eax、ebx、ecx、esi、edi、esp、edp等。大家要特别关注以下几个寄存器:
ebp(栈基地址指针)
esp(栈顶指针)
eip(指向下一条指令的地址指针)
除了寄存器的值外,该区还显示所有段寄存器的值及标识的位置,如FS段,这个段在后面降到异常时会用到。
(3)代码和数据区;
该区域位于整个界面的左下角,它包含了指定内存范围的字节码,我们可以通过菜单命令随时查看当前内存中的数据。
(4)栈区;
该区域位于整个界面的右下角,它反映了当前栈的分配情况及栈在程序运行过程中的变化情况。
二:简单介绍下其他载入
F7 :单步步入
F8:单步步过
F2:下断点
F9:跳到断点
还有,看到那个00401000了吗,这个应该很熟悉,固定基址,比如如果我们是用vs2012开发c++程序,这个东西在这设置:
如果选择的是否,其他的什么也不填写,那么默认就是0x00400000,上面看到的那个0x0001000多出来的那个1000就是代码段的开始,对照下面这个结构。
汇编语言编译链接的程序的可执行代码被装入操纵系统后,代码的执行入口点被设置在进程地址空间的0x00401000处,大小为1000h;紧跟着是输入表,也占1000h字节;最后是数据段,大小为1000h。以下是exe文件被加载到内存后的部分结构:
1.2.2 修改EXE文件字节码
OD不仅可以让我们对exe文件进行反汇编和单步执行调试,还可以对目标exe文件进行修改,比我我们对上面的那个Helloworld进行修改,直接修改显示的字符串。我们可以直接在(3)右键保存exe文件,然后就会跳出来一个框,直接在上面找到helloworld进行修改,记得如果后面不是00的不要修改,可能会导致崩溃。
效果:
当然如果是光要实现这个目的,方法很多,这里只是简单介绍OD,完全可以直接二进制进行编辑,比如直接用十六进制编辑软件FlexHex进行修改等:
1.3 初识PE文件
PE(Portable Executeable File Format,可移植的执行文本格式),使用该格式的目标是使链接生成的EXE文件能在不同的CPU工作指令下工作。
可执行文件的格式是操作系统工作方式的真是写照。Windows操作系统中可执行的程序有好多种,比如COM、PIF、SCR、EXE等,这些文件的格式大部分都继承自PE。其中exe是最常见的PE,动态链接库(大部分以DLL为扩展名的文件)也是PE文件,本书只涉及这两种类型的PE文件。
PE格式中,每一个大的部分的对齐方式就是按照200h大小对齐的。
Windows PE 第一章开发环境和基本工具使用的更多相关文章
- Windows PE 第一章 熟悉OD(顺便破解一个小工具)
熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...
- 图文详解如何搭建Windows的Android C++开发环境
原地址:http://www.apkbus.com/android-18595-1-1.html //================================================= ...
- Windows 7 下 PHP 开发环境搭建(手动)
Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ ...
- [转载]在Windows下搭建Android开发环境
http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...
- Windows系统下Android开发环境搭建
“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...
- Windows平台下PHP开发环境的配置
Windows平台下PHP开发环境的配置 一.基本环境 1.Windows XP 32位 2.Apache 2.2.25,下载地址:http://mirror.bit.edu.cn/apache/ht ...
- Windows下搭建Git开发环境
Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...
- 在windows 7搭建xcode开发环境
前言:本文适用于没有ios开发环境(如无iphone,mac等),在windows上搭建出ios的开发环境.值得注意的是,在windows搭建的ios开发环境只能做开发测试,无法发布产品.若需要发布产 ...
- [转]windows下安装Object-C开发环境
本文转自:http://hi.baidu.com/jeremylai/item/f40b9116cb3c5d582b3e22f5 在Windows下搭建Objective C开发环境,需要到GNUst ...
随机推荐
- 数据库事务 ACID属性、数据库并发问题和四种隔离级别
数据库事务 ACID属性.数据库并发问题和四种隔离级别 数据库事务 数据库事务是一组逻辑操作单元,使数据从一种状态变换到另一种状态 一组逻辑操作单元:一个或多个DML操作 事务处理原则 保证所有事务都 ...
- rest framework Views
基于类的意见 Django的基于类的意见是从旧式的观点颇受欢迎. - Reinout面包车里斯 REST框架提供了一个APIView类,它的子类Django的View类. APIView类是从正规不同 ...
- CloudQuery v1.3.4 版本更新
Hello,大家好久不见! 上一个版本(v1.3.3)发布已是春节前的事情了,此次 v1.3.4 是 CloudQuery 社区版在辛丑牛年的第一个版本发布.本次更新增加了新功能,优化了原有功能点.同 ...
- Learn Python the Hard Way,ex37-1
本练习为复习python的符号和关键字 关键字有: #and or False True print(1==0 and 2==0, 1==0 or 2==0) print(False) print(T ...
- FreeBSD 的xfce 终端动态标题不显示问题解决了:
tcsh配置,home目录创建.tcshrc, 写入以下配置 alias h history 25 alias j jobs -l alias la ls -aF alias lf ls -FA al ...
- Hive数据导出的几种方式
在hive的日常使用中,经常需要将hive表中的数据导出来,虽然hive提供了多种导出方式,但是面对不同的数据量.不同的需求,如果随意就使用某种导出方式,可能会导致导出时间过长,导出的结果不满足需求, ...
- ASP.NET .Core 集成 React SPA 应用
AgileConfig的UI使用react重写快完成了.上次搞定了基于jwt的登录模式(AntDesign Pro + .NET Core 实现基于JWT的登录认证),但是还有点问题.现在使用reac ...
- 安装RPM包或者源码包
RPM工具 RPM他是以一种数据库记录的方式将我们所需要的套件安装到linux主机的一套管理程序关于RPM各个选项的含义如下-i:表示安装-v:表示可视化-h:表示安装进度在安装RPM包时,常用的附带 ...
- GCD and LCM HDU - 4497
题目链接:https://vjudge.net/problem/HDU-4497 题意:求有多少组(x,y,z)满足gcd(x,y,z)=a,lcm(x,y,z)=b. 思路:对于x,y,z都可以写成 ...
- 全网最值得推荐的ELKB日志学习博客-博客地址留存
博客地址:https://elasticstack.blog.csdn.net/article/details/102728604 博客地址留存,后续解决疑难问题