分享

简单的注入汇编——别人的程序弹出我们的对话框(必学)

 然并卵书屋 2017-03-12

今天教大家一个简单的汇编应用,写入汇编代码,来实现别人的程序弹出我们的对话框!

我们知道一个程序弹出对话框,利用的是MessageBoxA这个API

我们看下API的定义:

Declare Function MessageBox Lib 'user32' Alias 'MessageBoxA' (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

调用MessageBoxA这个API需要传入四个参数,分别是句柄(整数型),对话框内容(文本型),对话框标题(文本型),对话框样式(整数型)

我们知道当句柄为0时默认是自己的程序句柄,对话框样式也可以为0

准备工具:记事本,代码注入器,CE(全称Cheat Engine)

  1. 打开记事本,打开CE,CE加载记事本

简单的注入汇编——别人的程序弹出我们的对话框(必学)

CE加载记事本句柄

2.CE中构造一会我们需要的对话框的标题和内容。我们以00010100内存地址为例(这个不固定可随意),在这个地址中写入文本型的“技术小成”,一会我们需要用到!

简单的注入汇编——别人的程序弹出我们的对话框(必学)

构造参数内容和标题

3.接下来获取MessageBoxA的内存地址!我们获取到77C2EA99这个内存地址为MessageBoxA的内存地址。当然如果编程的时候我们可以用GetProcAddressLoadLibrary这两个API来获取!

简单的注入汇编——别人的程序弹出我们的对话框(必学)

获取API的内存地址

4.我们打开代码注入器,加载记事本进程(类似CE操作)然后输入以下汇编代码。

push 0

压入参数0 (句柄=0)

mov eax,00010100

把00010100的文本型内容传入到寄存器EAX中

push eax

压入 eax(相当于设置对话框内容为“技术小成”)

mov eax,00010100

把00010100的文本型内容传入到寄存器EAX中

push eax

压入 eax(相当于设置对话框标题为“技术小成”)

push 0

压入0(相当于设置对话框样式为0)
call 77c2ea99

call 77c2ea99(相当于call MessageBoxA)

retn

子过程返回

简单的注入汇编——别人的程序弹出我们的对话框(必学)

完整汇编代码

5.OK!我们用代码注入器,点击注入远程代码!我们来看效果!

简单的注入汇编——别人的程序弹出我们的对话框(必学)

效果图

这就是简单的汇编应用!当然还可以有更多的玩法!比如实现按Q键回血,我们反汇编修改为按Q键打怪!

原理和这个相同,大家可以自行尝试!


本文为技术小成原创,欢迎转载,转载请注明出处!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多