第一章 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 第一章开发环境和基本工具使用的更多相关文章

  1. Windows PE 第一章 熟悉OD(顺便破解一个小工具)

    熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...

  2. 图文详解如何搭建Windows的Android C++开发环境

    原地址:http://www.apkbus.com/android-18595-1-1.html //================================================= ...

  3. Windows 7 下 PHP 开发环境搭建(手动)

    Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ ...

  4. [转载]在Windows下搭建Android开发环境

    http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...

  5. Windows系统下Android开发环境搭建

    “工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...

  6. Windows平台下PHP开发环境的配置

    Windows平台下PHP开发环境的配置 一.基本环境 1.Windows XP 32位 2.Apache 2.2.25,下载地址:http://mirror.bit.edu.cn/apache/ht ...

  7. Windows下搭建Git开发环境

    Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...

  8. 在windows 7搭建xcode开发环境

    前言:本文适用于没有ios开发环境(如无iphone,mac等),在windows上搭建出ios的开发环境.值得注意的是,在windows搭建的ios开发环境只能做开发测试,无法发布产品.若需要发布产 ...

  9. [转]windows下安装Object-C开发环境

    本文转自:http://hi.baidu.com/jeremylai/item/f40b9116cb3c5d582b3e22f5 在Windows下搭建Objective C开发环境,需要到GNUst ...

随机推荐

  1. rest framework Response

    回应 不同于基本的HttpResponse对象,TemplateResponse对象保留先前由视图提供给计算响应上下文的细节.该响应的最终输出,不计算直到需要它,以后在响应过程. - Django文档 ...

  2. WBX24T2X CPEX国产化万兆交换板

      WBX24T2X是基于盛科CTC5160设计的国产化6U三层万兆CPEX交换板,提供24路千兆电口和2路万兆光口,采用龙芯 2K1000处理器.支持常规的L2/L3协议,支持Telnet.SNMP ...

  3. 2019 GDUT Rating Contest I : Problem E. Convention

    题面: E. Convention Input file: standard input Output file: standard output Time limit: 1 second Memory ...

  4. ASP.NET Core与Redis搭建一个简易分布式缓存

    ​本文主要介绍了缓存的概念,以及如何在服务器内存中存储内容.今天的目标是利用IDistributedCache来做一些分布式缓存,这样我们就可以横向扩展我们的web应用程序. 在本教程中,我将使用Re ...

  5. 在Python中创建M x N的数组

    在Python中创建M x N的数组 一般有三种方法: 列表乘法 dp = [[0] * n] * m for 循环 dp= [[0 for _ in range(n)] for _ in range ...

  6. [源码解析] 并行分布式框架 Celery 之架构 (1)

    [源码解析] 并行分布式框架 Celery 之架构 (1) 目录 [源码解析] 并行分布式框架 Celery 之架构 (1) 0x00 摘要 0x01 Celery 简介 1.1 什么是 Celery ...

  7. 【odoo14】第二十三章、管理邮件

    邮件集成是odoo最重要的特性.我们可以通过odoo收发邮件.我们甚至可以管理业务文档上的电子邮件,如潜在客户.销售订单和项目.本章,我们将探讨在odoo中处理邮件的方式. 配置邮件服务器 管理文档中 ...

  8. Android学习中出现的问题

    •问题1:多行文字如何实现跑马灯效果? 博客链接:Androidd Studio 之多行文字跑马灯特效 解决状态:已解决 •问题2:cause: unable to find valid certif ...

  9. Linux 常用系统性能命令总结

    Linux 常用系统性能命令 查看系统负载top,free **w/uptime  ** 最后面三个数字表示1分钟,5分钟,15分钟平均有多少个进程占用CPU占用CPU的进程可以是Running,也可 ...

  10. 轻松理解 Java 静态代理/动态代理

    目录 什么是代理模式 定义 代理模式的主要角色 优点 缺点 静态代理 动态代理 JDK原生动态代理 例子 分析 小结 CGLIB动态代理 例子 分析 final类型 其他方案 尾声 理解Java动态代 ...