TC官方合作论坛

 找回密码
 立即注册
查看: 67238|回复: 341

[其他] [Hook插件]快速开发内存脚本+++++++

  [复制链接]
发表于 2015-10-22 10:57:29 | 显示全部楼层 |阅读模式
本帖最后由 如此美丽。 于 2015-11-4 03:18 编辑

2015-11-04  修复BUG   远程隐藏模块    将整个模块表填充0 导致程序异常


首先引用之前的帖子  可能没火起来 ..  [好插件 首页见 ! 标题长 成就高 ++++++++++]
这次最大的更新是 RemoteHookRegister   (添加可控条件断点  和  自定义接收消息参数)
其次是 RemoteHideMoudle (以前的HideMoudle  只是隐藏了 LDR_DATA_TABLE_ENTRY 结构体里的 FullDllName  如果只是遍历模块名字 还是能找到模块   这次是 FullDllName 和 BaseDllName 一起隐藏 达到完全被隐藏)
再者开始介绍插件函数

// Hook 寄存器  拦截寄存器上的值   后面会进行扫盲
//函数: var RemoteHookRegister(var SwitchAddr, var ProcessId, var phWin, var JmpAddr, var JmpSize, var Msg)

// 远程隐藏模块 (隐藏 LDR_DATA_TABLE_ENTRY 结构体里 FullDllName 和 BaseDllName)
//函数: var RemoteHideMoudle(var hMoudle, var ProcessId)

// 远程获取模块句柄 (跨进程获取模块句柄 例如获取非系统模块)
//函数: var RemoteGetModuleHandle(var MoudleName, var ProcessId)

// 远程获取函数地址 (跨进程获取函数地址 例如获取非系统模块的导出函数地址)
//函数: var RemoteGetProcAddress(var hMoudle, var ProcName, var ProcessId)

// 注入Dll (成功返回 模块句柄)
//函数: var RemoteInjectDll(var ProcessId, var MoudleName)
// 卸载Dll
//函数: var RemoteUnloadDll(var ProcessId, var MoudleName)

// 远程获取 RTL_USER_PROCESS_PARAMETERS 结构体指针
//函数: var RemoteProcessParametersAddr(var ProcessId)

// 远程获取 CurrentDirectoryAddr  当前目录指针 (Unicode)
//函数: var RemoteCurrentDirectoryAddr(var ProcessId)

// 远程获取 ImagePathNameAddr   程序路径指针 (Unicode)    (可用来过HS保护)
//函数: var RemoteImagePathNameAddr(var ProcessId)

// 远程获取 CommandLineAddr      程序命令行指针 (Unicode)
//函数: var RemoteCommandLineAddr(var ProcessId)


现在开始扫盲 (不喜勿喷  讲错请乱喷 .. 不用谢 {:soso_e144:})


一般人会觉得隐藏模块比较常用  其实个人觉得 隐藏模块 并不能对付目前的很多主流和非主流保护  现在大部分的保护 是开线程检测特征码 或 其他手段   
隐藏模块只是为了让一般手段"看不到" 你的或者我的某个模块
so 用隐藏模块来对付检测  然并卵啊  ..   最多只是对付那些检测模块的检测线程 ..

其实本插件最大的特色就是 Hook寄存器 (首先感谢 唯一关注此功能的 @smallduck218 提出的那么多好的建议)
老惯例引用两个外部解释
二漠又来发帖子了!使用TC的消息路由功能实现了HOOK拦截技术。用一个游戏的血量数值拦截举例!
易语言用超级HOOK获取游戏坐标数据
(当然 我也不知道他是怎么实现的 不过我只能说他那种方法局限性很大  不够灵活  而且不好控制)

正式扫盲 ..

找过基址的都知道  有些游戏很好找  有些游戏又是数组 又是其他什么的 绕过去绕过来都找不到
但是找动态是超级简单的  ..
当你找到动态后 你获取找到访问改地址的代码  你就能Hook了    他访问了这个地址寄存器上就会产生这个值(比如血条)   当你hook了这个地址 也就相当于你得到了寄存器上的所有值(里面包含血条等)  也就可以提取这个值了

例子开始
比如说 资源中的案例  (可以自己找一下动态地址)
查找访问可以看到 有这几个地址都在访问这个值  
我们就点一个  然后点 显示反汇编代码 在该指令上 设置一个断点  这个值改变后 他就会断下来  我们看下寄存器上有没有我们要的值(注意是寄存器上是16进制 注意转换)
比如说我在401b48 这个地址上 下了个断点 (当前血是461 十六进制 1DC) 他停了  然后我们看 EDX 上面有我们要的值

这个地址我们就可以hook  But ..
我们hook地址也要看 是否满足写Jmp的条件 且 寄存器上有值的情况下:

00401B48 - 89 56 34                      - mov [esi+34],edx                                                            // 这里字节不够 下面又刚好有5个字节 所以就直接在下面做
00401B4B - ff 90 fc 02 00 00       - call dword ptr [eax+000002fc]                                         [紫色加粗   比如这种  一个整行行加起来  是6个字节]  // 此处做HOOK 是最好的
00401B51 - 8d 4d e0                    - lea ecx,[ebp-20]                                                               // 代码执行完上面那个CALL 后 我们要的EDX的值就被覆盖了 所以我们要在上面做HOOK
00401B54 - 50                               - push eax
00401B55 - 51                               - push ecx                                                                          [红色加粗   比如这种  几个整行行加起来  是5个字节]
反正是一整行计算就对了   要>=5个字节   因为E9 00000000  [Jmp 00000000]
  1.     JmpAddr = #00401B4B
  2.     JmpSize = 6  // FF90 FC020000
复制代码
这样你就相当于拿到数据了  就不用 去努力的找基址了  {:soso_e142:}

下面开始讲这个函数的特色  (可控  条件断点)
RemoteHookRegister 函数第一个参数是 传入一个全局的 SwitchAddr 开关变量指针


1.可控
有了他 我们可以直接在自身里  SwitchAddr = true  和  SwitchAddr = false  来实现 OD里的断点功能
2.条件断点
我们可以开关断点了 我们也就可以用条件来操作了 断点了  比如说 我们拦截到血只有 100了  我现在立马 SwitchAddr = true  让程序停下来  我们吃药 (或者修改数据 其他操作等)  执行完毕后 我们继续 SwitchAddr = false
或者说 我不开心  我就要  SwitchAddr = false   一直挂起程序  等我洗完澡回来再    SwitchAddr = true


然后就是 自定义接收消息参数  (感谢 @smallduck218 的建议)


比如说我们 要hook 血  蓝  坐标 等很多 个信息   我们以前是固定的 WM_User 接收


现在可以自定义   比如说 我血用 #400  ( 他是从 #401 开始接收  因为是8个寄存器 所以要占4个值  也就是 401 402 403 404)
                                           蓝用 #404 ( 他是从 #405 开始接收  因为是8个寄存器 所以要占4个值  也就是 405 406 407 408)
以此类推

更清晰和详细的解释  看一看代码里的注释和跑一下程序  一下就懂了 {:soso_e143:}


游客,如果您要查看本帖隐藏内容请回复


我知道有些人跟我有一样的好习惯   [字多我不看]
对年轻人就是要任性 ..



当然最后还是要不忘宣传 疯狂论坛   你们要知道论坛不是最关键的     关键是  我的 VB源码板块    各种精品源码等你带走 ..   

[www.fkgzs.com]


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 6威望 +60 金币 +50 收起 理由
cookies + 10 + 10 小菜没看懂, 但是好像很厉害
rainshine + 10 + 10 大神你为何不去干文职~
sam7894604 + 10 + 10 很给力!
420130 + 10 楼主请放你写的源码可以吗?
zxw445 + 10 + 10 给你金币,文化不错,体育老师教的吧?.
言术 + 10 + 10 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-10-22 11:51:44 | 显示全部楼层
原来是推广的 哈哈

评分

参与人数 1金币 +1 收起 理由
如此美丽。 + 1 不喜勿下 谢谢! 说话注意措辞.

查看全部评分

回复 支持 0 反对 2

使用道具 举报

发表于 2015-10-22 11:55:15 | 显示全部楼层
给你金币,文化不错,体育老师教的吧?
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2015-10-22 11:00:21 | 显示全部楼层
预留

评分

参与人数 1威望 +10 金币 +10 收起 理由
zxw445 + 10 + 10 给你金币,文化不错,体育老师教的吧?.

查看全部评分

回复

使用道具 举报

发表于 2015-10-22 11:08:38 | 显示全部楼层
{:soso__4607844064215092132_3:}
回复 支持 反对

使用道具 举报

发表于 2015-10-22 11:10:49 | 显示全部楼层
看看
回复

使用道具 举报

发表于 2015-10-22 11:18:03 | 显示全部楼层
神啊,终于让我找到了!
回复 支持 反对

使用道具 举报

发表于 2015-10-22 11:19:54 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-10-22 11:51:13 | 显示全部楼层
..........
回复

使用道具 举报

发表于 2015-10-22 12:48:38 | 显示全部楼层
{:soso_e126:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-19 22:58 , Processed in 0.061666 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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