做od 游戏 退出外挂OD出问题了

游戏外挂辅助分析技巧制作原理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏外挂辅助分析技巧制作原理
上传于||文档简介
&&游戏外挂辅助分析技巧制作原理
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 9634|回复: 83
手把手教你过游戏线程隐藏,CE OD能附加
阅读权限30
在线时间15 小时
积分主题听众
技法精湛来自于日积月累
论坛严禁灌水,一律永久封禁!</
使用PCHTun工具,点内核钩子,然后点OBJEECT,然后找到游戏的保护驱动SYS,恢复,然后就能看到游戏进程,CE和OD附加吧
联系我时,请说是在 外挂海论坛 上看到的,谢谢!
上一篇:下一篇:
阅读权限20
在线时间12 小时
积分主题听众
请问要恢复哪几个SYS?
阅读权限50
在线时间29 小时
积分主题听众
佩服佩服!
阅读权限40
在线时间58 小时
积分主题听众
如果根本就没有驱动呢???网易的游戏,CE和OD都读不了内存,可是根本就查不到他的驱动和被HOOK的函数,这种要怎么办啊
阅读权限10
在线时间0 小时
积分主题听众
强烈支持楼主ing……
阅读权限50
在线时间29 小时
积分主题听众
广告位,,坐下看看
阅读权限30
在线时间4 小时
积分主题听众
阅读权限20
在线时间8 小时
积分主题听众
强烈支持楼主ing……
阅读权限20
在线时间2 小时
积分主题听众
阅读权限20
在线时间26 小时
积分主题听众
看到这帖子真是高兴!
Powered by Discuz! X3.2
Comsenz Inc.诚心请教各位大牛!请问制作网游外挂需要哪些知识? - 看雪安全论坛
悬赏金: 50 &nbsp 状态:
注册日期: May 2015
现金: 5 Kx
获感谢文章数:0获会员感谢数:0
结帖率:50%
, 12:36:18
诚心请教各位大牛!请问制作网游外挂需要哪些知识?
我在网上搜索看到别人说&&要会C语言&&汇编&对PE结构有一定的了解!就可以尝试编写了!!
这些我都粗略的学习了下&&&!可是还是摸不清到底该怎么操作!!&我是想要编写类似封包型的修改游戏的挂!&&&
主要是这些知识&对于我这样的新手来说&非常难学&&专业词语晦涩难懂!!&&没有目的地学习起来非常吃力!&&&请教各位大牛给小弟一个学习思路!!&&先学习什么再学习什么!!&&&比如说学汇编《目的是为了反编译游戏》!!&&还请各位不吝赐教!!!万分感谢!!!!
另外称心找一位师傅带带我!!&如果您愿意带我!我一定会尽道当徒弟该做的一切!!!!!!
再次感谢指点我的各位大牛!!祝您们心想事成!!!!!!
楼下看到有人说我只有30几钱&不够付悬赏..........&&&&我无语&&&&&悬赏是先要付了才能发帖的好吗??
虽然很感谢大家发言&&&但真心您们回答的没有解决我的困惑!!!&&&&我看应该没人愿意回答了吧&!这样的话&&求借一下吾爱破解的一个帐号&&&我下载一点附件&&&愿意的话&&&这里的悬赏就给您了!!!!!!愿意的MMMM我QQ
被 初入编程 最后编辑
注册日期: Jun 2015
现金: 41 Kx
获感谢文章数:0获会员感谢数:0
, 12:57:44
现在还有免费带徒弟的吗?一般都是要缴学费的。。。
注册日期: Oct 2008
现金: 499 Kx
致谢数: 22
获感谢文章数:3获会员感谢数:7
, 12:58:50
一般是传女不传男
注册日期: May 2015
现金: 5 Kx
获感谢文章数:0获会员感谢数:0
, 13:04:34
请各位大牛看在我头像这么吊的份上&指点我一下吧&&&不收徒弟也没关系&&&指点下我的思路就行&&&&好人一生平安
注册日期: Jun 2015
现金: 35 Kx
获感谢文章数:0获会员感谢数:0
, 13:24:25
编程是一定要学的,这是基础,汇编相当难,所以建议你从C语言开始,你可以尝试获取不同的信息,互联网这么大不要仅仅局限于论坛。最后还是要啰嗦一句,凡事有个过程,饭要一口口的吃。楼主祝你学有所成。
注册日期: Aug 2014
现金: 37 Kx
获感谢文章数:0获会员感谢数:0
, 14:51:54
首先汇编是要学的,不一定要精深,看得懂一般代码就行,因为分析封包的时候会涉及封包的加密算法;语言的话从易语言开始吧,对新手来说容易理解一点,很多功能容易实现,封包挂用易来写很省事很多,我个人认为;至于PE结构可以不用去学,容易误入歧途。
然后......,没有然后了,把赏金给我吧,这是最佳答案。
注册日期: Jun 2015
现金: 2 Kx
获感谢文章数:0获会员感谢数:0
, 15:18:04
汇编和c语言都要学精
注册日期: Jun 2010
现金: 250 Kx
获感谢文章数:1获会员感谢数:1
, 15:24:39
这个问题不好回答,因为不同游戏的外挂难度是不同的。最好有点目标。有针对的去学。首先要有编程能力。再者要有较强的逆向功力。
注册日期: Aug 2013
现金: 72 Kx
获感谢文章数:0获会员感谢数:0
, 20:17:47
汇编、网络编程都是基础额
注册日期: Apr 2015
现金: 4 Kx
获感谢文章数:4获会员感谢数:15
, 20:40:44
为什么学习汇编,主要是因为你写外挂的时候需要用CE进行扫描特征码。然后OD附加进程查找关键call.因此你需要能够懂得基本的汇编指令和分析能力,例如,你需要知道堆栈啊,数据窗口啊,参数的压栈顺序等,总之要在OD中能够分析出功能的关键call。
为什么学习C语言或者C++,其实这不是必须的,你学习易语言也可以,但是那不是长久之计,易语言在写辅助方面确实很有优势,但是些其他的就不行了,建议学习C,然后C++,总是语言知识一些指令而已,后面要实现某一个功能,还是需要算法的,说白了就是你的大脑,大脑不行,学什么都是费的,因为你只能学点皮毛的话,什么都做不出来,纯粹浪费你的时间,到头来什么都做不了。。编程就是要写代码,调试,分析。阅读,泡论坛只是取资料而已。。。。
建议你去学习下郁金香的视频。。还可以的。。。。因为有实例不会那么枯燥!!!
注册日期: Aug 2009
现金: 326 Kx
获感谢文章数:5获会员感谢数:33
, 20:46:41
首先得学会使用windows操作系统。。。
注册日期: Jan 2015
现金: 16 Kx
获感谢文章数:0获会员感谢数:0
, 20:50:04
首先要学会熟练的装逼
注册日期: May 2015
现金: 5 Kx
获感谢文章数:0获会员感谢数:0
, 21:21:02
不是吧&&各位朋友&&不带这样玩笑我的!!!&&&&汇编和C语言&&这是自然&&&&&&我都已经粗略懂学习了一遍了&&虽然不算精通&&但也马马虎虎能写简单的程序来!!!&&&但是现在还是对游戏外挂这么制作一点头绪都没有!!&&OD我也学习过&&&&&也尝试了去逆向!!&&可以还是不得要领!!!!&&&还请各位真心给我指条明路&&&&&&万分感谢!!!!!!!!
注册日期: Jan 2014
现金: 37 Kx
获感谢文章数:0获会员感谢数:0
, 23:15:31
写外挂脚本,会一个编程工具是基础,vc&vb&delhpi都可以。
外挂和脚本里必须包含的功能有,键盘鼠标控制,屏幕图像识别,游戏内存读写。
现在的游戏都把键盘鼠标的api接口和消息方式hook了,所以想控制鼠标键盘只能通过键盘鼠标驱动来实现。
屏幕图像识别现在基本用的都是大漠插件,可能市场上80%都是这个。
游戏内存读写可以在r3层也可以在r0层,会驱动的话r0很方便。r3需要unhook感觉好麻烦。
总结上面,驱动是要学习的,很多功能可以在r0层很容易的实现。
汇编如果你不写内存挂就不需要,汇编牵扯到过游戏检测。
写得比较乱,大体都在里面了。
最后总结一下吧,外挂脚本无外乎需要,键盘鼠标控制,屏幕图像识别,内存读写。这3个主要功能。以上相关功能的api基本都被游戏hook掉了,无法正常使用。键盘鼠标,内存读写,可以通过写驱动来实现,图像识别可以用大漠插件来实现。
有能力的话可以自己开发大漠插件类似模块。
注册日期: Jan 2014
现金: 37 Kx
获感谢文章数:0获会员感谢数:0
, 23:22:17
上面写的不是很全很细,外挂包含的东西感觉很多很广。
我自己也写挂,自己挂机,不外卖。除了外挂功能我还写控制台,这样就需要学习stock。
我大概学习了2年,我觉得自己学习得比较快。
现在驱动键鼠源码,内存读写源码,和图像识别都是自己的源码。
驱动键鼠和内存读写相对好做一些,最麻烦的是图像识别。因为网上一点例子都没有。
所以大漠才会垄断市场。
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
『求助问答』
『经典问答』
『资料导航』
『Android安全』
『iOS安全』
『软件逆向』
『编程技术』
『加壳脱壳』
『密码算法』
『资源下载』
『WEB安全』
『二进制漏洞』
『看雪众测』
『CrackMe』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『外文翻译』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:2013年12月 VC/MFC大版内专家分月排行榜第二
2014年2月 VC/MFC大版内专家分月排行榜第三2013年11月 VC/MFC大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。游戏外挂内存数据读取 - 半世疏离花安好 - ITeye技术网站
博客分类:
源地址:网络游戏.每一个数据比如你的血值.MP 值.怪的血值..在内存中是以16进制的形式存放的.而显示给我们看的是10进制的形式显示的,,[16进制转就是ABCDEF,好比 十进制的,逢16进1,十进制是逢十进1,不想算可以用windows自带的计算器,在附件中有]网 络游戏几乎全是动态内存存放[大话战国居然不是.那天写辅助工具时发现的],,就是每上线一次,数据在内存中分配位置会变,但是.数据间地址的差值是不变 的.就是所谓的偏移量..我们要做的工作就是要让动态的,转换成静态的,只要找到一个就成了.别的根据偏移量可以知道.步骤如下:1.我 们进游戏.首先要做的就是找动态内存地址[我以HP值举例],找动态内存的工具软件很多,我推荐金山游侠,FPE,CE,GE等...软件用法很简单.. 就好比你现在的HP值是1000.你先定位好程序.输入1000搜索,会搜到一串地址..然后让自己的血值变(比如穿件加HP的装备,比如是加了50 血),再搜1050,这样试几次就找到了唯一的动态内存地址.[虽然唯一,但一下线就会变的],第一步工作完全了...2.然后我们要用到调试工具设断点,调试工具很多,比如OD或softice等,我以softice举例:比 如我们搜索到HP的动态地址是..我们按CRTL+D呼出SOFICE..下命令设断点BPM
W 然后按F5退出进游戏..只要HP值一变.就会跳出调试的界面.比如说位置跳到了001B:0047EB17 mov eax,[edx+000000fc]处..其中..edx是基值[也可以是esi等等],000000fc是一个固定的地址偏移量,每次进游戏在变的就 是基值中的数值.3.到这..有多种方法可以求得静态地址..一种就是内存注入的方法.网上有很多这类的资料..主要是太麻烦..我就不 写了.我讲我自己的方法.我是用到指针的指针的思想..就是.我们的HP值是存放在一个动态内存地址中..地址其实也是数据..地址也是存放在地址中 的..当然.要基值的地址..所以我们要做的就是找存放基值地址的地址,可以用金山等软件搜索到..不过地址是16进制的..所以要转换成10进制.再找 存放基值地址的地址..比如说找到011076EC.好了.我们的工作完成了...现在就到了怎么写读语句..用C语言写起来很简单..用VB也可以 写..[别人说VB没指针.但并不代表不能用].因为按键是VBS语言.那我就用VB写..当然.我要调用WIN32 API函数VB调 用API要申明,如下:Ddeclare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Longdim edx as longdim hp as longReadProcessMemory nOK, ByVal &H011076EC, edx, 4, 0ReadProcessMemory nOK, ByVal edx+000000fc, hp, 4, 0就这样两条语句..hp中的数值就是我们的血值了..非常精准的可以得到..比如我血有1000点.我要在666点时加血..你就可以if hp&666 then keypress "加血的按键"补充一点..搜索基址的地址是会搜到不少个的..但是一般来说..第一个就是...
------------------------------------------------------------------------------------------------------------------------------
从游戏中得到动态内存数据
作者:sbsummer
刚才我玩了几把疯狂坦克,输了好几盘,觉得无聊就搞搞这个,下面开始说说如何得到游戏中的动态数据(地址改变),以得到疯狂坦克中坦克X坐标为例
------------------------------------------------------------------------------
SoftICE动态调试程序,游戏修改工具(金山游侠),反汇编(W32Dasm),Hex Workshop
------------------------------------------------------------------------------
一、找到内存中坦克X坐标
用金山游侠搜索,方法如下(金山游侠的使用我就不说了)
把坦克往左移动一些,就搜索“减少”;坦克往右移动,就搜索“增大”
反复搜索将会找到一个地址(当然其他游戏可能不止一个),这里是08BFAACC
注:动态的内存分配就是下次你如果再次搜索,地址将不再是08BFAACC
二、找到那条代码修改了这个数据(X坐标)
加载 SoftIce
在游戏状态 Ctrl+D 调出SoftIce,输入 BPM 08BFAACC W,这里的W表示如果这个地 址被写将中断
回到游戏,移动坦克,左移一下,程序中断,SoftIce指向的上面一句是
MOV DWORD PTR [ESI+],EAX
这句就是修改坦克坐标的代码,当然右移也能找到一句,这里就不重复了
三、修改程序使动态的数据变成静态
这里说点题外话,修改程序包括两种,一种是直接修改程序,一种是修改内存中的程序(内存补丁),这里由于我懒,所以用了第一种
修改程序:
疯狂坦克程序存在Fortress2.dat当中,如果你把这个文件改名为EXE文件一样可以运行,这里我们就把他修改成Fortress2.exe
打开W32Dasm反汇编,SHIFT+F12跳到,你看到这几行
MOV DWORD PTR [ESI+],EAX
8B MOV EAX,DWORD PTR [ESI+]
004046BF C000 MOV [ESP+10],
刚才我们说了是修改X坐标的那条语句,现在我们要让他每次修改完程序就能够把X坐标存储到一个固定的地址
现在要让它运行到这里就JMP到一个我们自己的代码的地方,于是在程序的尾部我们找到一段空白的区域00465A52,于是我修改004046BF为代码 JMP
00465A52,机器码为E98E130600,因为这句的长度不够以前的那句长,所以要加入几个NOP,机器码为90,所以我们打开HEX
Workshop修改程序,CTRL+G跳到位移为000046BF的地方,看到了C000,我们把它修改为E98E,现在程序将一运行到这里就跳到00465A52运行我们的代码。
四、实现我们自己的代码,然后跳回
我们的代码要做的是把动态变成静态,
MOV EAX,[ESI+]
MOV [],EAX
这样这个数值无论运行多少次,只要你移动(当然右移也要修改)就能在中找到X坐标,这段机器码为50 8B86A4010000
A E95BECF9FF
忘了说刚才我们把004046BF替换掉的那句MOV [ESP+10],也必须加上,所以打开HEX
Workshop,CTRL+G跳到00465A52,修改加入
C000 50 8B86A E95BECF9FF
这样动态数据就变成了静态
------------------------------------------------------------------------------
现在回顾一下
首先搜索坐标地址
找到改变这个地址的代码
修改代码让他跳到自己的代码中运行
在程序的空白段加入自己的代码,当然要补上被替换了的那句,还有修改了寄存器,必须先PUSH,再POP
下面的工作就是写一个程序读取这个地址了,我用VC写了一个,顺便贴一下关键代码
------------------------------------------------------------------------------
CProcess m_
bool m_ret=m_process.FindProcess("FortressII");
if (m_ret)
BYTE tank1xL = m_process.ReadByte(0x);
BYTE tank1xR = m_process.ReadByte(0x);
WORD tank1x = tank1xL+tank1xR*256;
temp = tank1x;
str.Format("%d",temp);
UpdateData(FALSE);
return TRUE;
else return FALSE;
-----------------------------------------------------------------------------
CProcess是一个我编写的游戏修改类,以下是部分函数代码:
HANDLE CProcess::OpenProcess(char *p_ClassName, char *p_WindowTitle)
hWindow = FindWindow(p_ClassName, p_WindowTitle);
if (hWindow) {
GetWindowThreadProcessId(hWindow, &pid);
return ::OpenProcess(PROCESS_ALL_ACCESS, false, pid);
return NULL;
bool CProcess::FindProcess(char *p_WindowTitle)
if (m_hProcess == NULL) {
m_hProcess = this-&OpenProcess(NULL, p_WindowTitle);
if (m_hProcess)
m_bGameRunning =
return m_bGameR
BYTE CProcess::ReadByte(DWORD p_Address)
if (m_bGameRunning) {
if (ReadProcessMemory(m_hProcess, (void*)p_Address,
(void *)&tmpValue, 1, &bytes) == 0)
return tmpV
-----------------------------------------------------------------------------
浏览: 90519 次
来自: 北京
对于理解前后端交互很有帮助,解决datatables刷新问题, ...
觉得这个东西好古老啊
非常好,我也发现这个问题的。只是没有像你这样写成blog。向你 ...
daogugo 写道楼主好, 不知道楼主有没有空,请教下jQu ...
挺不错的,值得学习!}

我要回帖

更多关于 od 游戏 退出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信