[读书][笔记]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 大数据 Scala
Scala快速入门--Scala环境搭建【Windows10】图解
Scala快速入门--Scala环境搭建【Windows10】图解
7 0
|
21天前
|
编解码 5G Linux
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
AVS3是中国首个8K及5G视频编码标准,相比AVS2和HEVC性能提升约30%。解码器libuavs3d支持8K/60P视频实时解码,兼容多种平台。《FFmpeg开发实战》书中介绍了在Windows环境下如何集成libuavs3d到FFmpeg。集成步骤包括下载源码、使用Visual Studio 2022编译、调整配置、安装库文件和头文件,以及重新配置和编译FFmpeg以启用libuavs3d。
36 0
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
|
1月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
41 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
1月前
|
编解码 Linux Windows
FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx
本文档介绍了在Windows环境下如何为FFmpeg集成libopus和libvpx库。首先,详细阐述了安装libopus的步骤,包括下载源码、配置、编译和安装,并更新环境变量。接着,同样详细说明了libvpx的安装过程,注意需启用--enable-pic选项以避免编译错误。最后,介绍了重新配置并编译FFmpeg以启用这两个库,通过`ffmpeg -version`检查是否成功集成。整个过程参照了《FFmpeg开发实战:从零基础到短视频上线》一书的相关章节。
51 0
FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx
|
1月前
|
Rust 前端开发 Windows
blog-engine-06-pelican 静态网站生成 windows11 安装实战笔记
这篇内容是一个关于在Windows 11上安装和使用静态网站生成器的教程,主要包括对多个博客引擎(如Jekyll、Hugo、Hexo等)的简介和对比,以及详细步骤教你如何在Windows环境下安装Python、Pelican、Rust和Cargo。作者首先介绍了Python和Pelican的安装,然后在遇到依赖问题时,引导读者安装Rust和Cargo来解决。最后,通过`pelican-quickstart`创建项目,编写Markdown文章并生成、预览站点。
|
1月前
|
编解码 Linux Windows
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
在Windows环境下,为FFmpeg集成音频编解码库,包括libogg、libvorbis和opencore-amr,涉及下载源码、配置、编译和安装步骤。首先,安装libogg,通过配置、make和make install命令完成,并更新PKG_CONFIG_PATH。接着,安装libvorbis,同样配置、编译和安装,并修改pkgconfig文件。之后,安装opencore-amr。最后,重新配置并编译FFmpeg,启用ogg和amr支持,通过ffmpeg -version检查是否成功。整个过程需确保环境变量设置正确,并根据路径添加相应库。
41 1
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
|
Windows 数据安全/隐私保护 网络协议
|
1月前
|
Linux Windows
Windows Server 下文件同步
Windows Server 下文件同步
28 0
|
4天前
|
编解码 安全 网络安全
RealVNC的 VNC server在windows7系统下无法正确运行
在Windows 7上运行旧版VNC Server(如4.1.2)可能存在兼容性问题,但可通过调整配置解决。步骤包括:安装VNC Server,设置兼容性模式(选择Windows XP SP3),启动VNC Server,配置VNC连接参数。若遇到问题,检查防火墙设置,确保系统更新,并考虑升级到新版VNC Server以提高性能和兼容性。
|
18天前
|
开发框架 .NET API
在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上成功运行.Net 8程序,需安装三个补丁:Windows Server 2008 R2 SP1 (KB976932)是基础更新;VC_redist.x64提供MSVC库支持;KB3063858解决.NET运行时加载`kernel.dll`的路径问题。KB3063858可能需要KB2533623。详细信息和下载链接在文中给出。