开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 29763|回复: 118
收起左侧

[图文资料] 详解各个VIP模块超级hook

[复制链接]
结帖率:100% (86/86)
发表于 2018-1-19 05:37:41 | 显示全部楼层 |阅读模式   北京市北京市
本帖最后由 taizhong 于 2018-1-19 05:38 编辑

各个VIP模块都是抄来抄去,你破J我的,我破J你的,
你是超级功能,我是究极功能,不知道再往后会叫什么XX功能,真是狗咬狗,一嘴毛
这些模块很少有自己原创的功能,就算是原创,不过就是把其他语言的代码移植到易语言,欺骗新手而已
毕竟初学易语言的都是一些新手,连API函数都不懂,新手的钱最好骗


还好有精易这样的公司,模块也是开源的,广大新手可以免费学习,只要你有时间,有兴趣,肯定会有所收获,不要再去其他论坛买什么永久VIP了

1  什么是超级HOOK功能?
'==================
可以实现读取指定地址寄存器值的功能
取出寄存器的值用处不大,我们是要的是寄存器+偏移值 后的数据,

2 人造指针和超级HOOK
'==================
CE具有自动汇编功能,将输入的汇编代码插入到目标进程中,来实现某些目的
比如,存放阳光数量的地址是一个动态的数值,每次启动游戏后,这个地址就会变动,于是就需要通过"是什么访问了这个地址"来一层一层的找出 阳光的基址(基址是一个常量,软件编译后,就固定不变了)
可是这样找偏移很麻烦,可以写入一段汇编代码,不用基址,不用偏移,.同样找出阳光的数量
找出阳光的数量地址后,通过 "是什么访问了这个地址",找出有这样的语句:
XXX(伪地址) 22ddFFF(伪机器码)  add eax ,[edx+5560]
这段汇编代码的意思是:把edx+5560这个地址中的数值,和eax相加,存放到eax中
其中edx+5560这个地址里面存放了阳光的地址,指向指针的指针,二级指针
假如知道了 在XXX地址这个地方,寄存器edx的值,就可以知道了阳光的数量
人为的找出一个地址,用来存放[edx+5560]的值,这种方法叫"人造指针"

如何写汇编得到寄存器[edx+5560]的值呢?
CE中新建一个空的脚本:

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

//这里存放我们要置入的汇编代码


originalcode:
//这里保留了原来的汇编代码

exit:
jmp returnhere
//这里是下一行指令
00400008://这里是当前的地址
jmp newmem
returnhere:




[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
00400008:

//Alt: db 00 00 00 00 00


上面的东西看不懂,可以不看,看下面的文字讲解:
在目标进程中,新申请2048长度的空间,用来存放我们写入的汇编代码,同时保留了要HOOK地址行的原始数据,和下一行的地址

通常可以这样写:
push eax
lea eax ,[edx+5560]
mov [YYY],eax
pop eax
YYY是我们指定的地址,用来存放阳光的地址,不用管EDX的值是多少
超级HOOK说白了,就是人造指针,没什么超级的,普普通通的技术,只不过用易语言来写出

3 不用某某VIP模块,"超级HOOK"该如何写?
'==================
第一步:申请一片内存空间,用于存放我们置入的代码;申请一个地址,用来存放[ebx+5560]的值
第二步:在这个内存空间,写入代码,最后jmp回来(被hook地址的下一行,加5)
第三步:hook目标地址,跳转到申请的地址空间

难点在第二步"mov [YYY],eax"和jmp语句,
YYY是变量,易语言不像C++内联汇编那样可以写入变量,置入代码()和_asm()都不行
mov dword ptr [YYY],eax  可以转换的机器码是:   { 163 } + 到字节集 ( 十六到十(YYY)),这样就可以写入变量了
jmp语句,这里是个远跳,需要计算目标地址和当前地址的距离,这个也不难计算

超级hook功能,仅此而已,仅此而已



附上某作坊超级hook源码用于学习
根据我的讲解,希望可以写出自己的"超级hook"










































超级HOOK[纯源码].e

34.26 KB, 下载次数: 1497, 下载积分: 精币 -2 枚

评分

参与人数 3好评 +1 精币 +3 收起 理由
王摇摆 + 1 支持开源~!感谢分享
镇魂 + 1 + 1 先点评加好评再送精币的说
yoaan + 1 很赞同,谢谢!

查看全部评分


发表于 2024-11-3 21:04:53 | 显示全部楼层   四川省成都市
优秀              
回复 支持 反对

使用道具 举报

发表于 2024-4-6 23:51:21 | 显示全部楼层   江苏省常州市
1111111111111111
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2024-2-26 11:17:52 | 显示全部楼层   广西壮族自治区桂林市
好东西,支持开源,感谢分享!
回复 支持 反对

使用道具 举报

发表于 2024-2-11 12:44:04 | 显示全部楼层   云南省曲靖市
为你的分享点赞!
回复 支持 反对

使用道具 举报

发表于 2024-1-23 17:58:09 | 显示全部楼层   广东省广州市
回复 支持 反对

使用道具 举报

发表于 2024-1-23 17:57:44 | 显示全部楼层   广东省广州市
感谢分享====
回复 支持 反对

使用道具 举报

结帖率:72% (13/18)

签到天数: 2 天

发表于 2023-12-18 09:31:58 | 显示全部楼层   黑龙江省哈尔滨市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-4-2 23:10:43 | 显示全部楼层   广东省广州市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-3-18 19:25:58 | 显示全部楼层   辽宁省营口市

谢谢大牛分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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