反汇编 - 反编译后的汇编程序调用

目录

1.反编译后的汇编程序

2. 汇编程序汇编成PE格式的目标文件

3.创建项目调用汇编后的obj文件


反编译后得到的汇编程序是可以被C/C++这样的高级语言调用的,本文演示一下C++调用反编译后的汇编程序。

1.反编译后的汇编程序

如下汇编程序是逆向一个将字符串转为大写的程序得到的。

second.asm

.486

;函数的调用方式为C中的调用方式, 对调用约定的
;判断非常重要, 这会直接影响程序的运行结果, 以及栈的平衡

.model flat, c

option casemap: none

.code;代码段定义

ToUpper proc arg_0:DWORD ;函数入口

push esi

mov esi, arg_0;语法修正

push edi

mov edi, esi

or ecx, 0FFFFFFFFh
xor eax, eax

repne scasb

not ecx

dec ecx

xor edx, edx

test ecx, ecx

jle short loc_40102D

loc_401018:;地址标号

mov al, [edx+esi]

cmp al, 61h

jl short loc_401028

cmp al, 7Ah

jg short loc_401028

sub al, 20h

mov[edx+esi], al

loc_401028:;地址标号

inc edx

cmp edx, ecx
jl short loc_401018

loc_40102D:;地址标号

pop edi

pop esi

ret

ToUpper endp

end

2. 汇编程序汇编成PE格式的目标文件

3.创建项目调用汇编后的obj文件

useAsm.cpp

#include <iostream>

extern "C" void ToUpper(char* );

int main()
{
	char tmpBuf[256] = "Hello World !";
	std::cout << "before:: " << tmpBuf << std::endl;
	ToUpper(tmpBuf);
	std::cout << "after:: " << tmpBuf << std::endl;

	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值