任意消耗改人偶也更新吧!不炒剩饭——三方法HOOK

社区服务
高级搜索
猴岛论坛电脑百科任意消耗改人偶也更新吧!不炒剩饭——三方法HOOK
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
4个回复

任意消耗改人偶也更新吧!不炒剩饭——三方法HOOK

楼层直达
tygc307

ZxID:1685860

等级: 中士
身份:版主
举报 只看楼主 使用道具 楼主   发表于: 2011-11-25 0
一直有人在那说消耗改人偶更新不了!不甚了解,于是上去看了一下,原来TX改了东西!也挺搞笑的,一个那么垃圾的东西也去和谐!还有那些说更新不了的论友,我只想说,何必要吊死在一棵树上?能HOOK的地方多了去了,自己随机应变下嘛!下面说三个方法,第一个方法是物品CALL外面HOOK,跟以前的一样;第二个是CALL内部,但是这里在HOOK里面加入了堆栈判断,跳转修改,比较复杂;方法三也是CALL内部HOOK,但是这是push   retn 跳转后再修改! 都不相同!


方法_①:



004BC6B4    E8 F7BEFFFF     call 004B85B0

004BC6B9    8B4D F0         mov ecx,dword ptr ss:[ebp-0x10]

004BC6BC    8B10            mov edx,dword ptr ds:[eax]

004BC6BE    51              push ecx

004BC6BF    8BC8            mov ecx,eax

004BC6C1    FF92 54050000   call dword ptr ds:[edx+0x554]
复制代码

004BC6B9    8B4D F0         mov ecx,dword ptr ss:[ebp-0x10]这里下断后,发现ecx是物品ID,mov ecx,dword ptr ss:[ebp-0x10]对ecx赋的值!

写法——
004BC6BC   /E9 FF486C02     jmp 02B80FC0 '跳到空白内存!
02B80FC0    8B10            mov edx,dword ptr ds:[eax]   ; 还原游戏
02B80FC2    68 131F0000     push 0x1F13                  ; 格斗人偶ID
02B80FC7    8BC8            mov ecx,eax                  ; 还原游戏
02B80FC9  ^ E9 F3B693FD     jmp 004BC6C1                 ; 跳回去

这是最简单的方法!!


方法_②:

004BC6C1    FF92 54050000   call dword ptr ds:[edx+0x554] 这里断下后,F7进去,一路F8到了
01D1C014    68 3B14D101     push 0x1D1143B
01D1C019    C3                     retn
看到了push 0x1D1143B 入栈一个地址下面紧接着一个retn返回,呵呵有意思,先记下来,作为第三个方法!

继续F8——

01D11642    8DA424 FCFFFFFF lea esp,dword ptr ss:[esp-0x4]
01D11649    878424 04000000 xchg dword ptr ss:[esp+0x4],eax
01D11650    8DA424 08000000 lea esp,dword ptr ss:[esp+0x8]
01D11657    FF52 48         call dword ptr ds:[edx+0x48]
01D1165A    E8 BC410200     call 01D3581B

从这里01D1165A    E8 BC410200     call 01D3581B进入物品CALL下一层!
而在之前有一个01D11657    FF52 48         call dword ptr ds:[edx+0x48] 进去看一下到了

00404BA0    81C1 C4000000   add ecx,0xC4
00404BA6    E9 05000000     jmp 00404BB0
00404BAB    CC              int3

记下他的堆栈esp=01D1165A 后面有用!现在我有点喜欢TX的JMP了!!

回到游戏对00404BA0处重新下断,发现还没吃药也会被断下来(后面发现,即使在仓库什么也不干也会被断下!),这说明了很多地方,包括游戏本身也会调用它,都会被断下!这里不好转移,但是还是有办法的,每个调用它的线程,有一点是不同的,就是堆栈的esp是不同的,于是可以通过比较esp的值来判断是否是物品CALL调用了他!

好了,思路出来了!! 先在
01D11657    FF52 48   call dword ptr ds:[edx+0x48] 处下断,吃个药断下来后进去发现
堆栈的第六个值是物品ID,也就是esp+14 处存的物品ID!记下esp=01D1165A

所以可以是00404BA6    E9 05000000     jmp 00404BB0 JMP 跳到空白内存,然后修改堆栈!

随便找一个吧:
02B80FD0    0000            add byte ptr ds:[eax],al
02B80FD2    0000            add byte ptr ds:[eax],al
02B80FD4    0000            add byte ptr ds:[eax],al

但是这里注意,一定不要是先直接修改jmp 00404BB0  跳过去后在来写代码,不然游戏直接崩溃的!!

我们要跳到 02B80FD0 ,那先在这里写好代码在回去修改jmp跳转!

cmp dword ptr ss:[esp],0x1D1165A '判断当前调用是否是物品CALL的调用!
jnz 00404BB0 '不相等就调回游戏原处,不做任何修改!相等就继续往下走!
mov dword ptr ss:[esp+0x14],0x1F13 ‘(1F13=7955格斗人偶,有兴趣的可以自定义!)
jmp 00404BB0  ’改完了就跳回去!
还原的话,把00404BA6    E9 05000000     jmp 00404BB0重新写一下就行!

方法2加入了判断值形式的HOOK,相对复杂一点!

讲一下第三个方法——刚才无意看到的一个好地方!



方法_③:

01D1C014    68 3B14D101     push 0x1D1143B
01D1C019    C3              retn

这里是先入栈一个地址,然后再retn返回到对应地址!也相当于jmp!!
所以一样可以利用一下!!

既然是返回到1D1143B这里,那就在1D1143B处下断看下堆栈情况以便于怎样修改堆栈!
断下后看到堆栈第八个值也就是esp+18处存放的消耗品ID!
好了,可以修改了!!

找一空白内存——
02B80E91    0000                    add byte ptr ds:[eax],al
02B80E93    0000                    add byte ptr ds:[eax],al
02B80E95    0000                    add byte ptr ds:[eax],al

跳到 02B80E91处修改!!

写法——
01D1C014    68 3B14D101     push 0x1D1143B 改为 push 02B80E91
01D1C019    C3              retn '这里不变!!
mov dword ptr ss:[esp+0x18],0x1F13‘修改
push 0x1D1143B '入栈返回游戏的基址
retn ’依葫芦画瓢的返回游戏就好了,这里还可以直接jmp 的跳到1D1143B,效果一样

说明图片如下:



源码测试可用:

精心工作室E语言源码开发.zip[点击下载](155 K) 下载次数:11 累计下载获得 DB 22
第五代自动冲值软件长期招代里,无限开发下家代里.
买点卡,冲钻,冲话费请到我的小店:http://shop.paipai.com/14388157
w313928459

ZxID:8677083

等级: 上校
勇于认错,坚决不改。
举报 只看该作者 沙发   发表于: 2011-11-25 0
  看不懂额,我想学易语  不过貌似貌似很难很难。

际遇之神

惩罚

w313928459穿马甲被大家发现,罚款DB3

勇于认错,坚决不改。
卑微的小丑丶

ZxID:15153844

等级: 中将
风光的背后不是沧桑,就是肮脏!

举报 只看该作者 板凳   发表于: 2011-11-25 0
LZ做我师傅把
huang14

ZxID:5687882

等级: 列兵
举报 只看该作者 地板   发表于: 2012-04-15 0
学学血虚阿布
a88143333

ZxID:18091849

等级: 大校
举报 只看该作者 4楼  发表于: 2012-05-06 0
任意消耗改人偶也更新吧!不炒剩饭——三方法HOOK
帮不鸟你
« 返回列表
发帖 回复