本课对API(Createthread)进行了Hook,首先我们在测试程序里启动一个线程,可以使用易语言的启动线程 (&工作, , 线程句柄)也可以直接调用API(Createthread)我们这里分了两种情况测试,第一,钩子写到测试文件里,第二,单独写一个钩子DLL,通过注入现行hook。我们hook的动作是调用系统的calc,你的系统如果是WIN10要确定是否安装了计算器。当然我们可以下任何钩子。实际应用是这样的,我们首先确定所注入进程是否调用了CreateThread这个API,其次我们应当写一个注入的钩子DLL。
注入工具无所谓,我们演示了EIP,和远程线程注入工具。
单个注入文件源码
当我们先hook后,当启动线程时,会调用我们自己的mythread函数。
.版本 2 .支持库 EThread .支持库 spec .程序集变量 线程句柄, 整数型 .程序集变量 a, 类apihook .子程序 _按钮1_被单击 启动线程 (&工作, , 线程句柄) .子程序 工作 置随机数种子 () .计次循环首 (1000, ) 编辑框1.加入文本 (到文本 (取随机数 (10, 100)) + “ + ” + 到文本 (取随机数 (100, 999)) + “ = ” + #换行符) 延迟 (300) .计次循环尾 () .子程序 _按钮2_被单击 强制结束线程 (线程句柄) .子程序 __启动窗口_创建完毕 皮肤_加载 (1) .子程序 _按钮3_被单击 a.安装Hook (“kernel32.dll”, “CreateThread”, 到整数 (&mythread)) a.开始Hook () .子程序 mythread .参数 lpThreadAttributes, 整数型 .参数 dwStackSize, 整数型 .参数 lpStartAddress, 整数型 .参数 lpParameter, 整数型 .参数 dwCreationFlags, 整数型 .参数 lpThreadId, 整数型 信息框 (“被hook成功!!”, 0, , ) 运行 (“calc.exe”, 假, ) .子程序 _按钮4_被单击 a.停止Hook ()
钩子DLL源码
.版本 2 .子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码 hook () _临时子程序 () ' 在初始化代码执行完毕后调用测试代码 返回 (0) ' 返回值被忽略。 .子程序 _临时子程序 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。 .子程序 hook, , 公开 a.安装Hook (“kernel32.dll”, “CreateThread”, 到整数 (&mythread)) a.开始Hook () .子程序 mythread .参数 lpThreadAttributes, 整数型 .参数 dwStackSize, 整数型 .参数 lpStartAddress, 整数型 .参数 lpParameter, 整数型 .参数 dwCreationFlags, 整数型 .参数 lpThreadId, 整数型 信息框 (“被hook成功!!”, 0, , ) 运行 (“calc.exe”, 假, )
教程获取下载:
百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947
511遇见QQ: 272586593