吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 6603|回复: 12

[C/C++] APIHOOK学习笔记(三)——实战制作易语言push窗口补丁

[复制链接]
李沉舟 发表于 2016-3-26 08:30 | 显示全部楼层 |阅读模式

APIHOOK学习笔记(一)
https://www.52hb.com/forum.php?m ... 1&fromuid=20388
(出处: 吾爱汇编论坛)

APIHOOK学习笔记(二)
https://www.52hb.com/forum.php?m ... 9&fromuid=20388
(出处: 吾爱汇编论坛)






这次我们用VC6来写这个DLL,为什么?因为VC6的运行库基本上所有电脑都装了,你整个需要VC2010的补丁出来,人家机子没装怎么办?抓瞎。
至于用到的课件我全部打包进压缩包了,在附件里。

实战

我们打开附件(要先下载)目录下的push.exe
1.png


应该都会易语言push窗口吧,不会的看恒大的零基础教程去。

这是需要修改的地方

        //0040108B  |.  68 01000152   push 0x52010001
        //0040108B      68 04000152   push 0x52010004

比较上述数据,我们发现只要把0x40108C的01改成04就可以了

打开VC6,新建一个dll工程(源码我打包进附件了)

文件(&F) —— 新建(&N)

2.png

3.png

然后把<DLL工程名>.cpp里的代码替换为如下

#include "stdafx.h"
#include "windows.h"

HMODULE h;
int pt;
unsigned char newcode[7] = {184,0,0,0,0,255,224}; //要修改的数据
unsigned char oldcode[7];//备份原数据,方便还原

HWND MyCreateWindowExA(int dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,int dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,int* lpParam)
{
        //0040108B  |.  68 01000152   push 0x52010001
        //0040108B      68 04000152   push 0x52010004
        unsigned char write = 0x4;//储存要修改的数据
        WriteProcessMemory(HANDLE(-1),LPVOID(0x40108C),&write,1,0); //虽然地址是40108B可我们要更改的只有第二个字节,也就是40108C
        WriteProcessMemory(HANDLE(-1),LPVOID(pt),&oldcode[0],7,0);//还原数据
        //有些同学可能会问,为什么不调用一个CreateWindowExA,我一开始也是这样想的,可是后来我发现,调不调用都一样....所以干脆省掉,这里第一个CreateWindowExA函数的调用肯定是输入法调用的,如果觉得有必要加上一句 CreateWindowExA(把这个子程序里的各项参数写上去); 就可以了
        return 0;
}

void FixHook() //这里我不解释了,不懂得去看看我的前面两篇笔记
{
        int addr;
        addr = int(&MyCreateWindowExA);
        h = LoadLibrary("user32.dll");
        pt = int(GetProcAddress(h,"CreateWindowExA"));
        VirtualProtect(LPVOID(pt),7,PAGE_EXECUTE_READWRITE,0);
        ReadProcessMemory(HANDLE(-1),LPVOID(pt),&oldcode[0],7,0);
        memcpy(&newcode[1],&addr,4);
        WriteProcessMemory(HANDLE(-1),LPVOID(pt),&newcode[0],7,0);
}

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                                         )
{
        if (ul_reason_for_call = DLL_PROCESS_ATTACH) //如果是DLL被加载
        {
                FixHook();//安装HOOK
        };
    return TRUE;
}


知道怎么编译成Release的版本不,好吧,就知道你不知道

4.png
5.png

然后听到一声响,你就可以在DLL工程目录里面的Release目录下得到一个dll,然后把这个dll注入push.exe,就可以看到效果了

怎么注入?我说个简单的方法
打开OD,载入push.exe,大家的OD应该都有StrongOD插件吧
选择菜单栏的 插件(P) —— StringOD —— InJectDll —— Reomote Thread
在弹出的窗口中选择HOOK Patch.dll,然后把程序跑起来就可以了。
可能会看不出来效果,不过区别方式是,如果不使用HOOK补丁的话,打开的窗口是一个有按钮(单击可以载入一个空白窗口)的窗口,使用后载入的就是一个空白窗口





push.zip (1.83 MB, 下载次数: 54)

评分

参与人数 9威望 +1 HB +38 THX +6 收起 理由
消逝的过去 + 2
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
VipDongle + 1
agan8888 + 1
ding520 + 1 &lt;span class=&quot;text2Link&quot;&gt;[吾爱汇编论坛&lt;a target=&quot;_blank&quot;&gt;52HB.COM&lt;/a&gt;]-学破解防破解,知进攻懂防守!&lt;/span&gt;.
圈瞳 + 1 + 1 吃水不忘打井人,给个评分懂感恩!
yiyaya + 1 + 1 分享精神,是最值得尊敬的!
1355400205 + 1 + 1 不玩了
Shark恒 + 1 + 30 + 1 分享精神,是最值得尊敬的!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ll988600 发表于 2016-3-26 08:32 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ll988600 发表于 2016-3-26 08:33 | 显示全部楼层

板凳也是我的  话说没有VC6怎么办
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 李沉舟 发表于 2016-3-26 08:46 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
隐s丶 发表于 2016-3-26 13:00 | 显示全部楼层

嗯 感谢分享,一直没接触过hook 我去试试...
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
叶良辰和赵总 发表于 2016-3-26 13:26 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
莫丽丽 发表于 2016-3-26 14:52 | 显示全部楼层

看起来 好高端的 样子  谢谢 分享了 !
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
waxberry 发表于 2016-3-26 15:12 | 显示全部楼层

看起来很厉害的样子
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
guitar 发表于 2016-3-26 16:39 | 显示全部楼层

如果不用OD注入,运行程序直接加载HOOK怎么做呢,谢谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 李沉舟 发表于 2016-3-26 20:19 | 显示全部楼层

guitar 发表于 2016-3-26 16:39
如果不用OD注入,运行程序直接加载HOOK怎么做呢,谢谢楼主

下次有时间写个注入DLL教程
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表