Fun之使用火绒剑对AsmToE工具行为分析

最近在看《Q版缓冲区》这本书准备入门二进制,在这本书中为了老师先带领学生们手写漏洞利用的汇编代码然后通过VC++的调试模式获得这些汇编代码对应的机器码然后让学生们手抄下来!对,没错!是手抄下来!像我这种懒人肯定要找个方便的路子啊,那么多怎么抄!就算抄也容易抄错啊!我就想大学时不是学过计算机组成原理,里面不是有指令结构,是不是可以通过一张机器指令与汇编代码的对应指令表然后将汇编指令解析成机器码!主意是不错,但是时间太少,没那么多时间完成这个!那就找线程工具吧,为此本文的主句AsmToE这款工具出现了,使用了以后感觉不错,于是对这款工具的实现原理起了兴趣。了解得这这款工具美夜赤月大佬拿易语言写的,于是就加了作者QQ向作者讨要源码,大佬说非开源源码500,额。。。。。。。好多钱,买不起,于是就有了这篇文章。

首先工具界面就是下图这个样子,提供了默认MASMNASM三种引擎
Fun之使用火绒剑对AsmToE工具行为分析_第1张图片接下来就拿出我们的火绒剑将AsmToE进程添加到监控中,如下图所示:
Fun之使用火绒剑对AsmToE工具行为分析_第2张图片Fun之使用火绒剑对AsmToE工具行为分析_第3张图片

这里选择NASM引擎,然后输入一段汇编代码并点击转机器码,如下图所示:
然后回到火绒剑,看看它做了哪些工作:
可以看到AsmToE创建了asm.tmp及evbDF18.tmp两个临时文件,在这篇文章中我提到过WIndows是根据文件头部对文件进行的识别而不是后缀名,所以说别看这两个文件时tmp后缀但是有可能是可执行文件,所以这里清除火绒建中的过滤然后并开始监控看看有什么新的发现。把无关进程排除后我发现了下面两个有意思的监控记录:
Fun之使用火绒剑对AsmToE工具行为分析_第4张图片记录2
好吧!evb开头的临时文件果然是个可执行文件,接下来看下这个进程的命令行参数如下(为什么命令行里是nsam.exe??没准和他前面的一些注册表操作有关):
Fun之使用火绒剑对AsmToE工具行为分析_第5张图片
根据这个命令行是推断出使用的nasm.exe,使用了-f和-o两个指令,参数中包含了asm.tmp及bin.tmp两个文件,其中-o指定的是输出文件这个我知道,我需要看下asm.tmp,但是如下图所示AsmToE在在转换完后将上面这两个文件都删除了:
在这里插入图片描述
火绒剑无能为力了,还是写几行Python脚本竞争下asm.tmp文件吧,代码如下:

while 1:
	try:
		with open(r"C:\Users\myalie\Desktop\tools\AsmToE\asm.tmp","rb") as f:
			print f.read()
    except:
    	pass

执行结果如下:

bits 32
push ebx

其中push ebx正是刚才的汇编代码!到此使用NASM引擎将汇编代码转换为机器码的思路大概理清楚了,步骤如下:

  1. 将待转换的汇编代码写入文件并在文件最开始的地方写入bits 32
  2. 执行nasm.exe -f bin asm.tmp -o bin.tmp
  3. 读取bin.tmp中的字节码即为最终结果

至于其他的两个引擎,得通过分析调用栈的方式或者通过逆向(AsmToE加壳保护并且脱壳后没能正常运行)的手段进行分析,奈何自己目前太菜还是留到以后再说吧!

你可能感兴趣的:(AsmToE,汇编语言,机器码,指令转换,机器码转换,Fun)