VC++使用OD反汇编引擎(非BC做DLL或LIB包装)

这几天一直在用OD调试一带tmd壳程序,断点时而成功时而崩溃,不知何故。侥幸在某次内存访问断点时,找到我要找的代码,于是准备向上追溯直到拿到全局实例的地址。可断点经常崩溃,又不会写OnlyScript,每次修改代码查看堆栈均很麻烦。于是萌生出自己写个反汇编器,打印出某处的反汇编,在需要下断查看堆栈处写一个hook,打印堆栈后还原hook并继续执行。

    首先要解决的是反汇编问题,在网上狂搜,找到OD反汇编引擎,它竟然是开源的,再加上对OD的反汇编出来的文本风格比较熟悉,用它最合适了。(下载地址:http://www.ollydbg.de/disasm.zip)。

    在官网看文档发现,官网只在BC和gcc下编译过,没有测试过VC是否能编译。用VC编译,提示缺少头文件<dir.h>。直接注释掉缺少的头文件,再次编译报告找不到pow10l库函数。
    再次在网上找资料,无果,试图用BC编译成LIB,在VC中引用,可LIB格式不一致,仍不行。退而求其次,准备编译成DLL动态引用,可引擎是C写的使用了多个全局变量,这个封装以后要调整就麻烦了。于是决定继续试试用VC编译。
    在网上查pow10l,发现原来只是以10为底的幂函数即10的n次方,于是换成pow(10,N),编译通过,测试程序正常。
    (在assembl.c文件中把:floating*=pow10l(decimal*base);改为:floating*=pow(10,decimal*base);)

    在使用过程中还发现一个问题,打印输出的OpCode总是莫名其妙多出很多FF,后来**C多次调试对比后才发现,VS2008默认的char是有符号的,而BC的char默认是无符号的。在项目属性C++选项里设置后,问题解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值