精易论坛

标题: hook学习 [打印本页]

作者: Bong    时间: 2023-3-16 17:37
标题: hook学习
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 请在本子程序中放置动态链接库初始化代码
hook ()
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。
子程序名返回值类型公开备 注
_临时子程序  
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
子程序名返回值类型公开备 注
hook 
变量名类 型静态数组备 注
hProcess整数型 
pfnhook整数型 
fnhook字节集 
lwlwcom 
modProcessMODULEENTRY320
i整数型 
hKernelUtil整数型 
hookaddr整数型 
hProcess = -1  ' 因为是注入 所以就是自身了
EnumModule (modProcess, 0)
计次循环首 (取数组下标 (modProcess, ), i)  ' 枚举出模块 选择我们需要改写的地址
如果真 (到文本 (modProcess [i].szModule)“KernelUtil.dll”)
hKernelUtil = modProcess [i].hModule
跳出循环 ()

计次循环尾 ()
hookaddr = hKernelUtil + HEX_to_DEC (“8336A”)
pfnhook = VirtualAlloc (0, 1024, #MEM_COMMIT, HEX_to_DEC ( #PAGE_EXECUTE_READWRITE ))  ' 申请一块内存 用于写入我们自己的汇编程序
lw.Initialize ()
lw.AsmAdd (“pushad”)
' ---------------函数1
lw.AsmAdd (“call ” + lw.AsmCallret (DEC_to_HEX (pfnhook + 1 - 1), DEC_to_HEX (取子程序地址 (&hook2))))  ' call我们的处理程序 call的地址 要根据申请内存和自己程序的地址 来计算偏移
lw.AsmAdd (“popad”)
lw.AsmAdd (“mov [ecx],eax”)  ' 这是我们修改的地方本身的操作,要给他保留回去 防止出错
lw.AsmAdd (“mov eax,[ebp+10]”)  ' 这是我们修改的地方本身的操作,要给他保留回去 防止出错
lw.AsmAdd (“ret”)  ' 我们只是读数据  所以要保留修改的地方的汇编代码
fnhook = HEX_to_Bytes (lw.AsmCode ())
WriteProcessMemory (hProcess, pfnhook, 取变量数据地址 (fnhook), 取字节集长度 (fnhook), 0)  ' 把我们的汇编代码写入刚刚申请的内存
lw.AsmClear ()
lw.AsmAdd (“call ” + lw.AsmCallret (DEC_to_HEX (hookaddr), DEC_to_HEX (pfnhook)))  ' 这里是我们要把hook 的地方 跳转到我们的函数 函数1 偏移自己算
fnhook = HEX_to_Bytes (lw.AsmCode ())
WriteProcessMemory (hProcess, hookaddr, 取变量数据地址 (fnhook), 取字节集长度 (fnhook), 0)  ' 把这段汇编 替换掉原来的汇编
子程序名返回值类型公开备 注
hook2 
变量名类 型静态数组备 注
EAX整数型 
EBX整数型 
EDX整数型 
置入代码 ({ 137, 69, 252, 137, 93, 248, 137, 85, 244 })  ' 这里就把 eax和ebx edx分别取出来了
' 我不知道为什么 如果把 打开文件写到这里的话,变量eax和变量ebx的值就变成空了。我也是新手不太理解 但是 如果是调用另一个子程序他就不会变
子程序1 (EAX, EBX, EDX)  ' 通过处理
返回 ()
子程序名返回值类型公开备 注
子程序1  
参数名类 型参考可空数组备 注
eax整数型
ebx整数型
edx整数型
变量名类 型静态数组备 注
a整数型 
如果真 (ebx = 5 eax ≠ 0 edx = HEX_to_DEC (“A0”))
a = 打开文件 (“C:\Users\asd\Desktop\log.txt”, 2, )
移到文件尾 (a)
如果 (eax < 0)
插入文本行 (a, “qqNUM:”到文本 (2147483647 × 2 + eax + 2))
插入文本行 (a, “qqNUM:”到文本 (eax))
关闭文件 (a)
返回 ()


i支持库列表   支持库注释   
spec特殊功能支持库


企鹅版本是9.7.3


我也是新手,正在学习这块方面。 不过我这个hook好像 每次收到消息 都会 显示两次发送者的id 我也不知道为啥。学习中,我想应该是经过了多次 可以自行替换模块修改,我这边就不提供我自己用的模块了。防止我的模块有毒.我弄的是注入的DLL 我自己测试没啥问题


学习.png (271.84 KB, 下载次数: 0)

学习.png

690MKZ36G5VZ5O6349WY.png (104.75 KB, 下载次数: 0)

690MKZ36G5VZ5O6349WY.png

作者: sinewtec    时间: 2023-3-16 17:43
天书秘籍手下了!!!!!!!
作者: FanLi    时间: 2023-3-16 18:37
牛啊大佬,大佬什么时候出视频教程
作者: quary    时间: 2023-3-16 19:21
学习了  谢谢楼主分享!!! 好人一生平安!!!
作者: 3251819574    时间: 2023-3-16 19:24
感谢分享!!!!!!!!!!!!!!!!!
作者: 大师兄是反派    时间: 2023-3-16 20:05
瞅瞅看
作者: renjianhong48we    时间: 2023-3-16 21:27
感谢分享
作者: 成神之日    时间: 2023-3-17 05:06
谢谢大佬分享 支持支持
作者: 一指温柔    时间: 2023-3-17 08:35
开源精神必须支持~
作者: 吃干饭的锅    时间: 2023-3-17 12:10
感谢分享、
作者: Conquer    时间: 2023-3-17 20:31
开源精神必须支持~
作者: 换行符    时间: 2023-3-17 21:38
开源精神必须支持~
作者: 396384183    时间: 2023-3-18 14:12
开源精神必须支持~
作者: ArchiverX3    时间: 2023-3-18 14:41

作者: 794229345    时间: 2023-3-18 22:29
更关心怎么定位的关键点
作者: moecsn    时间: 2023-3-20 13:42
支持开源
作者: nameliuhaobo    时间: 2023-3-27 09:00
good6666666666
作者: nameliuhaobo    时间: 2023-3-27 09:00
OK  谢谢了
作者: 18072699966    时间: 2023-3-28 05:54
        感谢分享,很给力!~
作者: 艾玛克138    时间: 2023-3-29 21:02
加油!努力学习!
作者: hsyh    时间: 2023-3-31 04:13
感谢分享,很给力!~
作者: 530278137    时间: 2023-4-16 10:13
6666666666666666
作者: wpzyan123    时间: 2023-5-11 14:05
        支持开源~!感谢分享 必须支持一下




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4