[读书][笔记]WINDOWS PE权威指南《一》PE的原理和基础 之 第一章 环境搭建及简单破解(上)

简介: [读书][笔记]WINDOWS PE权威指南《一》PE的原理和基础 之 第一章 环境搭建及简单破解

前言

前期准备

开发语言:MASM V10.0

工作环境:Windows XP/Vista/8/10

源程序的编辑器:

记事本(notepad.exe)用来编写汇编源程序

Visitual Studio 2015/2017/2019也是可以的

动态调试器:OllyDBG软件

静态调试器:W32DASM

字节码的阅读器和编辑器:

FlexHex/UltraEdit(下载地址)/WinHex

1.1 开发语言MASM32

MASM32是Steve Hutchessond在微软的不同产品基础上集成开发出来的汇编开发工具包,适合Win32编程环境的汇编语言,它主要用于基于Windows平台的32位汇编语言开发,是现在最流行的 Win32汇编开发包。与VC++和VB等高级语言相比,Win32汇编具有得天独厚的优势,这些优势主要体现在:

  1. 它摒弃了对系统细节的封装,更接近于系统的底层,从而使得编码更加灵活,能完成许多高级语言无法做到的事情(如代码重定位和特殊寄存器赋值等)。
  2. 它生成的可执行PE文件体积小,执行速度快。
  3. 它可用于软件的核心程序段设计,以提高软件的性能。
  4. 它能够直接接触系统的底层,所以使用它要远比使用VC++和VB等高级语言更适合开发与系统安全相关的程序。比如,与计算机硬件密切相关的驱动程序的开发、计算机病毒的分析与防治、软件加密与解密、软件调试、Windows PE研究等。

因此,学习Win32汇编对学习信息安全而言很有必要。MASM32是我们研究Windows PE的首选语言。

MASM32是一个免费的软件包,该软件包中包含了汇编编译器ml.exe、资源编译器rc.exe、32位的链接器link.exe和一个简单的集成开发环境( Intergrated DevelopmentEnvironment,IDE)QEditor.exe。为什么说MASM32是从其他产品集成出来的呢?这是因为软件包中的ml.exe来自Microsoft 的MASM软件包,rc.exe和 link.exe则来自Microsoft的Visual Studio。MASM32软件包还包括了详尽的头文件、导入库文件、例子文件、帮助文档和一些工具程序,如 lib.exe和dumpbin.exe等,后者被大家公认为最好的显示PE文件结构的工具。大家可以从网站 http://www.masm32.com/

上获得MASM32 SDK的最新版本,并可以在论坛里与来自世界各地的汇编爱好者交流技术和思想。

1.1.1 设置开发环境

可以选用vs作为开发工具

可详见我的博客[笔记]vs2015 编写汇编masm32 Helloworld

或者其他相关文章

下载安装masm

环境变量配置

include=masm32/include/;

lib=masm32/lib/;

path=masm32/bin/;

测试是否配置成功

运行cmd.exe->运行ml命令

1.1.2 开发第一个源程序HelloWorld.asm

配置

配置lib

配置include

代码

.386
;CPU mode
.model flat ,stdcall
option casemap : none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kerne132.lib
;数据段
.data
szText db 'Helloworld',0
;代码段
.code
main :
  invoke MessageBox,NULL,offset szText ,NULL,MB_OK
  invoke ExitProcess,NULL
end main

1~6行是程序的注释;

7~10行定义了该汇编程序支持的基本特性;

11~16行引入了外部的动态链接库,在这些动态链接库里有程序需要的函数调用,这种调用方式符合程序代码重用的原则;

17~19行定义了这个程序中用到的数据;

20~25行则是程序的代码段,25行的伪指令“end start”告诉操作系统代码入口﹔最有用的代码行只有23行和24行,分别调用了user32.dll 动态链接库中的MessageBoxA函数和kernel32.dll动态链接库中的ExitProcess函数。

1.1.3 运行HelloWorld.exe

vs版本运行

run一下vs就成功显示

masm32运行

1.进入工作区
2.编译源文件

在当前工作区中输入命令

ml -c -coff Helloworld.asm

然后回车。

参数-c表示独立编译,不进行链接;

参数-coff表示编译后生成标准的COFF目标文件。

编译以后会在源文件所在目录生成一个与源文件同名的obj目标文件。

ml.exe是汇编语言的编译程序,它负责将汇编源程序编译成目标文件。该程序可接受的各参数的解释和描述如下所示:

3.链接目标文件与动态链接库

链接是为了将源文件中调用到的动态链接库中的函数的相关信息附加到可执行文件中。链接命令是:

link -subsystem:windows Helloworld.obj

参数-subsystem表示允许该代码运行的子系统。

如果没有错误,执行以上命令后会在源文件所在目录下生成最终的可执行文件HelloWorld.exe。链接程序的参数解释如下:

4.运行
Helloworld.exe

1.2 调试工具OllyDBG

大家可能对OllyDBG(简称OD)并不是很熟悉,但在软件破解领域,它却是与TRW2000和SoftICE等齐名的跟踪破解利器。熟练掌握OD的用法对我们以后研究EXE文件内部指令跳转、病毒分析、逆向工程与反病毒设计等有很大的帮助。那么,就让我们从调试HelloWorld.exe开始学习吧。

OllyDBG 2.01版本 下载地址

OllyDBG官网下载地址

OllyDBG 吾爱破解版 自带插件会比较方便

注意:下载需要关闭Windows实时保护


相关文章
|
2月前
|
Java 开发工具
鸿蒙Flutter实战:02-Windows环境搭建踩坑指南
本指南介绍如何搭建鸿蒙Flutter开发环境,包括下载Flutter SDK、配置环境变量(如FLUTTER_STORAGE_BASE_URL、PUB_HOSTED_URL、DEVECO_SDK_HOME等)和检查工具版本。还提到避免项目路径过深、与SDK同盘存放等注意事项,以及解决VsCode无法识别设备的方法。
61 0
|
1月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
38 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
2月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
77 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
2月前
|
API Windows
Windows之窗口原理
这篇文章主要介绍了Windows窗口原理和如何使用Windows API创建和管理窗口。
65 0
|
3月前
|
存储 安全 程序员
Windows任务管理器开发原理与实现
Windows任务管理器开发原理与实现
|
4月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
221 0
|
5月前
|
存储 安全 数据安全/隐私保护
Windows 32 汇编笔记(一):基础知识
Windows 32 汇编笔记(一):基础知识
|
4月前
|
存储 编译器 Linux
Windows 32 汇编笔记(二):使用 MASM
Windows 32 汇编笔记(二):使用 MASM
|
Windows 数据安全/隐私保护 网络协议
|
29天前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
下一篇
DataWorks