从VC的反汇编复制代码到自己的汇编

从VC的反汇编复制代码到自己的汇编


很多同学都想自己写一些汇编的程序,但是往往比较复杂的函数用汇编实现起来比较麻烦,有时希望编写自己的主要逻辑,而不想去重新实现已有的逻辑,这样可以有多种办法:我们讲的是其中的一种,将可以编译的C程序转换成汇编代码


(1)用C编写函数,尽量精简
(2)运行的时候查看反汇编,要去掉字节码,保留地址,语句可选,将其复制到文本文件中
(3)修改代码:如果选择了语句则将这些语句前面加上分号注释掉
(4)根据跳转指令后面的括号内地址确定跳转的地方,比如jmp FN+0x22(33445566h),找到地址=33445566的那个行前面写上FN_33445566h,“jmp FN+0x22(33445566h)”改写为jmp FN_33445566h
(5)修正转移地址后,删除所有的地址码
(6)开始修正参数如dword ptr[user],根据参数表和调用约定确定user的位置,如esp+4h 或ebp+4h,需要注意的是如果使用esp+X的方式要从函数头开始看,到引用处之间的push、 add esp、 sub esp等操作,重新确定相对esp的地址

(7)添加汇编其他框架代码:

.code;

 public FN;

 FN proc;

     你的代码

FN endp;

END;

(8)保存asm文件,添加到VC的工程中,右键文件属性:自定义生成步骤:命令行"ml(64) /Fo $(OUTDIR)\FNasm.obj /c $(ProjectDir)\FNasm.asm",输出:“$(OUTDIR)\FNasm.obj”
(9) C语言中用extern "C" 声明这个函数
(10)编译链接调试













  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值