博客
关于我
c和汇编混合编程----shellcode----弹出计算器
阅读量:710 次
发布时间:2019-03-21

本文共 935 字,大约阅读时间需要 3 分钟。

在VC++中使用汇编和混合编程弹出计算器是一个有趣的技术挑战。本文将展示如何利用汇编片段与现有的C程序结合,成功实现弹出计算器的功能。

步骤1:加载动态链接库

首先,我们需要加载Kernel32.dll库文件。使用LoadLibrary函数,这是Windows API中常用的方法。代码示例如下:

#include "windows.h"int main() {    printf("begin\n");    HINSTANCE libHandle = LoadLibrary("kernel32.dll");        // 保留Other.Alloc uploads, 然后最终调用WinExec    __asm__ {        lea eax, shellcode        call eax    }    return 0;}

步骤2:混合编程与汇编

为了调用WinExec函数,我们需要使用汇编语言。在C程序中,我们使用__asm__标志说明 assembler block。关键在于构建正确的shellcode 数组:

char shellcode[] = "\x81\xEC\x54\x04\x00\x00\x33\xDB\x53\xB8\x2E\x65\x78\x65\x50\xB8\x63\x61\x6C\x63\x50\x8B\xC4\x6A\x05\x50\xFF\x15\x14\xA2\x42\x00\xBC\x50\x04\x00\x00";

步骤3:反汇编与优化

通过反汇编工具,我们可以更好地理解上述机器码。通过试错和调试,可以确定每个指令的正确顺序和组合,最终实现调用WinExec并弹出计算器。

在实际应用中,建议使用调试器和相应的反汇编工具来找到最佳实现方式。通过测试不同参数和组合,可以进一步优化代码,提高其在不同Windows版本中的兼容性。

注意事项

  • 确保所有函数调用符合相应的API文档规定。
  • 加密或隐藏shellcode时,可使用更高级的技术如虚拟化或回写保护机制。
  • 总是进行测试,在不同环境下验证程序的稳定性和兼容性。

通过以上方法,您可以成功在VC++中结合C和汇编语言,实现弹出计算器等功能。

转载地址:http://chmrz.baihongyu.com/

你可能感兴趣的文章
面试题 08.01. 三步问题
查看>>
剑指 Offer 11. 旋转数组的最小数字
查看>>
word文档注入(追踪word文档)未完
查看>>
作为我的第一篇csdn博客吧
查看>>
ajax异步提交失败
查看>>
一道简单的访问越界、栈溢出pwn解题记录
查看>>
Stream 某些API
查看>>
测试调用另一台电脑ip是否有用
查看>>
mos-excel集成文档
查看>>
chat 快问!
查看>>
Linux总结
查看>>
DKT—Going Deeper with Deep Knowledge Tracing
查看>>
响应的HTTP协议格式+常见的响应码
查看>>
创建线程方式
查看>>
LRUCache
查看>>
关于Linux系统中touch命令的说明
查看>>
将windows里的内容直接复制粘贴到ubuntu,提高效率
查看>>
将tomcat设置成window自启动服务
查看>>
webservice 远程服务器返回错误:(400)错误的请求
查看>>
[日常] PHP与Mysql测试kill慢查询并检验PDO的错误模式
查看>>