汇编与逆向(一)-汇编工具简介

devtools/2025/1/22 14:06:44/

RadASM是一款著名的WIN32汇编编辑器,支持MASM、TASM等多种汇编编译器,Windows界面,支持语法高亮,自带一个资源编辑器和一个调试器。

一、汇编IDE工具:RadASM

RadASM有内置的语言包

下载地址:RadASM assembler IDE(RadASM assembler IDE)

1、把这三个下载之后,解压主程序

比如到:I:\RadASM 再解压汇编语言包 。注意:语言包的Language目录汇编包中的文件及目录要放在主程序所在目录中,比如:I:\RadASM。

说明见readme.txt

2、设置中文语言

弄好后点击 RadASM.exe 启动RadASM,然后点击 Option:

3、配置RadASM

重启RadASM,点击        选项==>编程语言

4、使用方法

可以参考:radasm的汇编语言操作入门 - nyc1893 - 博客园 (cnblogs.com)

5、中文乱码问题的解决

如果你不需要再汇编程序里使用中文,那你就已经完事了,但是RadASM本身如果程序里有中文就会乱码,下面是解决办法:调节字体。

点击        选项==>字体选项

点击  代码编辑 ,选择字体(这里推荐微软雅黑),再选择编码,别忘了确定应用!

点击确定应用确定, OK!

二、汇编编译工具:MASM32

官网下载地址:MASM32 SDK(https://masm32.com/download/masm32v11r.zip)

1、安装

解压缩masm32v11r.zip,点击install.exe,选择分区,一直“确定”

直到:

点击ok

最后

我的Masm安装在I分区中,如图:

2、设置系统环境变量

注:如果不使用命令行编译,可忽略,直接在RadAsm中设置Masm32路径,见下文。

设置三个Window系统环境变量:include、lib,path增加masm32

include =c:\masm32\include
lib=c:\masm32\lib
path=c:\masm32\bin

完成后,命令行输入ml,回车,出现以下页面,表示配置成功

3、命令行编译asm

Masm32目录中新建source文件夹(可以是其他任意目录),记事板写入以下代码,到存到c:\masm32\source\helloword.asm

.386
.model flat ,stdcall ;32bit memory model
option casemap :none ;case sensitveinclude windows.inc
include user32.inc
include kernel32.incincludelib user32.lib
includelib kernel32.lib.const g_szHello db 'Hello World',0g_szTitle db 'PE',0
.codestart:invoke MessageBox,NULL,Offset g_szHello,Offset g_szTitle,MB_OKinvoke ExitProcess,0end start

命令行编译:ml -c -coff C:\masm32\source\HelloWord.asm

编译成功,出现obj文件

命令行链接:link -subsystem:windows HelloWord.obj

出现exe文件

双击exe文件,出现以下窗口,运行成功! 

三、RadAsm设置Masm32路径

F5,Assemble汇编成功

四、使用RadAsm汇编hello word!

1、创建一个无资源的汇编工程

2、输入代码

.386
.model flat ,stdcall ;32bit memory model
option casemap :none ;case sensitveinclude windows.inc
include user32.inc
include kernel32.incincludelib user32.lib
includelib kernel32.lib.const g_szHello db 'Hello World',0g_szTitle db 'PE',0
.codestart:invoke MessageBox,NULL,Offset g_szHello,Offset g_szTitle,MB_OKinvoke ExitProcess,0end start

3、Ctrl+F5,完成编译运行

注意:默认Masm32没有Doslink.exe,编译纯Dos的App时,,

Alt+Ctrl+F5会报错,Link生成obj失败!按Ctrl+F5 构建并运行,成功生成exe文件后再进入调制器中运行。

4、在调试器中运行

按alt+7 打开Register列表,按F10 即可让程序在单步状态下运行,同时相应的查看包括PSW寄存器和其他寄存器的状态情况。

标志位对应的符号如下:

       radasm软件界面简单,不光对于新手容易上手,还拥有较强的工程管理功能,加之众多插件的支持,使得它用汇编语言编写Windows软件变得得心应手。


http://www.ppmy.cn/devtools/152616.html

相关文章

Erlang语言的并发编程

Erlang语言的并发编程 引言 并发编程是现代软件开发中的一个重要领域,尤其是在面对需要高效处理大量任务的应用时。Erlang是一种专门设计用于并发编程的编程语言,由于其在电信和即时通信系统中的广泛应用,逐渐引起了开发者的关注。Erlang的…

抽奖系统(4——活动模块)

1. 活动创建 需求回顾 创建的活动信息包含: 活动名称活动描述关联的一批奖品,关联时需要选择奖品等级(一等奖、二等奖、三等奖),及奖品库存圈选一批人员参与抽奖 tip:什么时候设置奖品数量和奖品等级&am…

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统可以涵盖多个功能模块,例如用户管理、设备管理、预约管理、计费管理等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的系统。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

Python----Python高级(正则表达式:语法规则,re库)

一、正则表达式 1.1、概念 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、 regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母&#xff0…

AIP-124 资源关联

编号124原文链接AIP-124: Resource association状态批准创建日期2020-03-20更新日期2020-03-20 有时无法用常规的树结构清晰表达API资源的层次结构。例如,一个资源可能与两个另外的资源类型之间存在多对一关系。或者一个资源可能与另一个资源类型存在多对多关系。 …

k8s namespace绑定节点

k8s namespace绑定节点 1. apiserver 启用准入控制 PodNodeSelector2. namespace 添加注解 scheduler.alpha.kubernetes.io/node-selector3. label node 1. apiserver 启用准入控制 PodNodeSelector vim /etc/kubernetes/manifests/kube-apiserver.yaml spec:containers:- co…

Next.js 实战 (十):中间件的魅力,打造更快更安全的应用

什么是中间件? 在 Next.js 中,中间件(Middleware)是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。 通过中间件,你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务…

使用Docker构建Node.js应用的详细指南

引言 Docker平台允许开发者将应用程序打包并运行为容器。容器是一个在共享操作系统上运行的隔离进程,提供了一种比虚拟机更轻量级的替代方案。尽管容器并不是新事物,但它们提供的好处——包括进程隔离和环境标准化——随着越来越多的开发者使用分布式应…