本章学习内容是汇编语言,现在直接写汇编的机会不多了,但一定要能读懂,信息安全的核心思维方式“逆向”在这有很好很直接的体现,反汇编就是直接的逆向工程。

所以我在前几天的学习中在Ubuntu环境下安装了可以编写dos的软件,以下是具体流程:

  • Ubuntu下安装dosemu模拟dos环境:

指令:sudo apt-get install dosemu

  • 运行

sudo  dosemu

dosemu 下看到的C盘和D盘只是虚拟出来的,对应的目录在~/.dosemu/drives 下:
执行命令:

cd ~/.dosemu/drives

dos 下用到的程序放置在 ~/.dosemu/drives/d/bin 目录下:

dosemu 已经自带了debug,若要编译汇编代码还需要增加 masm.exe 和 link.exe 程序(需要自己网上下载):

  • 编写汇编代码:

在dos下用自带的edit 编辑器编写,输入命令edit

打开后鼠标选择File->New 开始编写,之后选择Save as 保存为 .asm 后缀文件即可

在C盘对应的 ~/.dosemu/drives/c 目录下用vim 编写

但是可能会觉得在这个目录下编写程序有点麻烦,不太好管理程序,而我们平时习惯在家目录下专门的文件夹内写程序(我的~/Program/Assembly/Nasm 目录是专门存放汇编程序的)。我们可以在C盘目录下创建一个软链接:

sudo ln -s ~/Program/Assembly/Nasm ./Asm

这样我们在~/Program/Assembly/Nasm下写的汇编代码,在Dos 下进入Asm目录就可以直接编译。

  • 汇编链接:

编译上面写好的 hello.asm 文件

汇编
执行命令:

masm

输入文件名hello,不需要加后缀.asm ,然后一直回车,汇编完成,生成hello.obj 文件。

链接
执行命令:

link

输入文件名hello,不需要.obj后缀,然后一直回车,生成可执行程序hello.exe,(有一个报错不用理会)。

运行
输入hello即可运行程序

  • 退出

exitemu

Linux环境下使用dosemu写汇编的更多相关文章

  1. Linux环境下段错误的产生原因及调试方法小结(转)

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  2. Linux环境下段错误的产生原因及调试方法小结

    转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...

  3. 【转】【调试技巧】Linux环境下段错误的产生原因及调试方法小结

    本文转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html 1. 段错误是什么 ...

  4. Linux环境下段错误的产生原因及调试方法小结【转】

    转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...

  5. 转:Linux环境下段错误的产生原因及调试方法小结

    源地址:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 补充:http://baike.baidu.com/link ...

  6. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  7. linux环境下学习使用pro*c/c++工具

    1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...

  8. 关于ARP攻击的原理以及在Kali Linux环境下的实现

    关于ARP攻击的原理以及在Kali Linux环境下的实现 全文摘要 本文讲述内容分为两部分,前半部分讲述ARP协议及ARP攻击原理,后半部分讲述在Kali Linux环境下如何实现ARP攻击以及AR ...

  9. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

随机推荐

  1. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总【转】

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html ...

  2. span设置padding无效

    <span style="display:inline-block;padding-top:10px">测试<span> 给span加属性 display: ...

  3. struts2 文件上传和下载,以及部分源代码解析

    struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...

  4. kernel&uboot学习笔记

    uboot kernel uboot 1.Uboot编译流程分析: uboot是如何编译生成的? 2.根据include/configs/$(target).h可以生成include/autoconf ...

  5. 扒一扒P2P风控的底牌(转)

    互联网金融,这里面水就太深了,能当理财买的一般有两类,一个是货币基金,比如余额宝,这个大家已经十分清楚了,没什么风险, 但问题就是收益越来越低.实在是不过瘾了.而另外一种就是P2P理财了,收益很高,也 ...

  6. 在linux系统中I/O 调度的选择 (转)

    I/O 调度算法再各个进程竞争磁盘I/O的时候担当了裁判的角色.他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能. 在linux下面列出4种调度算法 CFQ (Completel ...

  7. beego的MVC架构介绍

    beego 的 MVC 架构介绍 beego 是一个典型的 MVC 框架,它的整个执行逻辑如下图所示: 通过文字来描述如下: 在监听的端口接收数据,默认监听在 8080 端口. 用户请求到达 8080 ...

  8. 20-ab压力测试及nginx性能统计模块

    一:找到apache ab模块. ab -c 1000 -n 50000 http://127.0.0.1/index.html 查看信息: 超过1024个线程 出现错误,说打开文件太多了.cket: ...

  9. 【Scala】Scala的Predef对象

    隐式引用(Implicit Import) Scala会自己主动为每一个程序加上几个隐式引用,就像Java程序会自己主动加上java.lang包一样. Scala中.下面三个包的内容会隐式引用到每一个 ...

  10. ubuntu 中文显示乱码问题 (转)

    添加中文字符编码: $sudo vim /var/lib/locales/supported.d/local #添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 ...