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

目录

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;
}

相关推荐

  1. 仿真中标 SDF 警告信息汇总

    2024-01-24 17:20:02       28 阅读
  2. jadx编译apk

    2024-01-24 17:20:02       40 阅读
  3. 编译jar包

    2024-01-24 17:20:02       28 阅读
  4. 编译 Trino Dockerfile

    2024-01-24 17:20:02       35 阅读
  5. APK编译

    2024-01-24 17:20:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 17:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 17:20:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 17:20:02       82 阅读
  4. Python语言-面向对象

    2024-01-24 17:20:02       91 阅读

热门阅读

  1. bert pytorch模型转onnx,并改变输入输出

    2024-01-24 17:20:02       46 阅读
  2. Unity Asset store下载资源修改位置

    2024-01-24 17:20:02       64 阅读
  3. ChatGPT 和文心一言哪个更好用?

    2024-01-24 17:20:02       57 阅读
  4. Qt容器QMap(映射)

    2024-01-24 17:20:02       57 阅读
  5. cookie in selenium & 定时更新token

    2024-01-24 17:20:02       58 阅读
  6. go语言网络编程通信案例

    2024-01-24 17:20:02       52 阅读