用过CFF Explorer之后,发现它可以给EXE添加Seciton,甚至还可以直接导入一个文件作为EXE中一个Section,功能好赞。配合OllyDBG来对现有软件的EXE做一些小小的hack感觉效果很好。
最早的时候我是直接用OllyDBG打开EXE,然后找到一片都是0的地方来汇编代码进去。但是这样受到的限制很多,最直接的就比如有的时候找不到一堆0的地方,找到也不确定能不能写:有可能这些部分其他地方要用,又或者汇编了代码进去要保存的时候OllyDBG说存不了。现在可以直接自己添加一个Section,不会出现找不到空间的情况了。
既然可以导入文件,那比起直接在OllyDBG里面敲汇编,用Nasm来写汇编代码要方便得很多。在测试导入Nasm写的汇编以后,我就在捉摸着更加方便的事情:用C语言来写。
我选用的是OpenWatcom C编译器,没什么太多理由,正好抓到它而已。它反正也可以生成Raw二进制格式的文件。
研究了一下它的链接器,最终的结果是用这样的参数:
OPTION OFFSET=xxxxxx FORMAT RAW BIN
或者
OUTPUT RAW OFFSET=xxxxxx
一起用就会出一些奇怪的结果。说明文档非常长,不知道是不是哪里漏掉了什么没看到的部分……
一起用的时候有的时候就出现最前面16个字节全部是0,然后后面的代码全部错位,大汗……