分类分类
关注+2012-03-01作者:lff
好了,打完怪后,果然跳出了断点。
输入指令i r $r0 $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12, 可以查看r0-r12寄存器的值。
这里可以看到r0为6200, r3为99974.
完全证实了我的猜想,R0是当前的经验值,R3是你升级到下个等级时所需要的经验值。那么这时候你直接把R0的值改为99974,那么你就可以直接升级了,不用再辛苦赚经验了。
好了,写到这里,基本的方法就讲完了。找断点的还有一个常用的方法是在IDA VIEW TABLE里面搜索你可能想到的关键词,然后看下相应的子程序象不象,有没有可能,这里真的要猜,要不断调试。下面以我昨晚找到免费购买顶级物品的COIN作为一个列子。
既然是COIN, 那么COIN肯定就是关键词啦,这是我的第一个反应,所以就在搜索窗口输入COIN, 查找子程序。
这样搜下来有10几个和COIN有关的子程序,那么不知道是哪个,就只能一个个试,设置相应的断点,然后再在GDB里面一个一个调试,如果你设置了断点,但是当你用COIN买东西的时候,不跳出,那么这个断点就有可能不是的。即使跳出,还要查看寄存器值,才能确认。同时读这个子程序的代码。这里没有学过汇编语言的同学一定是很困难的,因为如果看不懂指令,那真是什么都白搭。ARM汇编语言其实还是比较容易学的,找下书看看就明白了,或者上网查指令学习。大学学过8086汇编和单片机的同学那就是很容易了,无非就是读写指令,跳转指令,判断指令这些关键的指令。
好了,昨晚我试了所有的和COIN有关的子程序,很悲惨的是一个都不是,这里基本上花去了我4小时的时间,这个时候是最痛苦的,因为你找不到断点,不知道该修改哪里了。
那就只能再试下其他的可能的关键词,我试了MONEY, STORE, BUY, PURCHASE , acquire, 这些都是些常用的和购买有关的,可是都没有用,有些地方的确是会跳出断点,但是不是所需要的。 这部分又花费了一大段时间。
再得想别的脑筋了,购买物品还有一个关键词就是ITEM, 不过要查和他有关的语句就会跳出太多的地方,一般很少用。但是这时候也只能这样了。同样在IDA VIEW里面搜索 "item", 然后按“ctrl-t" 自动搜索下一个。每到一个就先根据子程序的名字猜下会不会是他,然后再用GDB设置断点测试。结果我就这样一直试一直试,试到一个子程序叫"keypressed_TradeItem"的时候,我眼前一亮,因为keypress可能就是按下购买键的时候,何况后面还跟着TRADEITEM. 修改靠的不是技术,靠的是哥德巴赫猜想!
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论