android软件反编译的简单应用

来源:互联网 发布:python内置函数怎么用 编辑:程序博客网 时间:2024/05/01 10:03

本文所写仅限于技术性研究,请勿用于任何不当用途,否则后果自负哈。

植物大战僵尸2昨天出android版的了,玩了下,没钱买金币真难,好吧,那只能用屌丝最喜欢的办法了,修改。。。。。

先把下载的apkapktool之类的反编译工具反编译成smali文件,结构如图:

 

移动游戏基地的sdk包名以cn.cmgame开头的,所以直接找到它。用过移动游戏基地的人应该都知道,它用了个回调函数来通知程序付费成功与否(没用过的自己去下一个看看),所以我们就直接去反编译的到的smali文件中找对应的付费成功失败的函数名,成功的就无所谓了,找失败的(onbillingFail,最后发现,所有的onbillingfail调用都在cn.cmgame.billing.ui.b$1.smali文件中,那接下来就超级简单了,把所有onbillingfail全部替换成onbillingsuccess。不知道怎么写smali文件中那种格式的代码无所谓,去找下当前文件中onbillingsuccess调用是怎么写的,复制过来替换上就行了。

 

将上图所示的都替换成下图这样,其实就是把所有Fail改成Success就行了。

 

当然,

 

 

用户取消也要改成成功的。到这里,付费的破解基本就完成了,反正不管是付费失败还是付费成功,都是回调游戏中成功的函数,不过为了防止某些比较笨的用户硬是要去点确认支付的按钮,那我们把确认支付的按钮都给隐藏掉去,顺便把String.xml里面的一些说明文字改一下,告诉用户其实不会扣费等等。。。。

按钮吧,肯定在cn.cmgame.billing.ui里面的,那就一个文件一个文件找找吧,这个比较麻烦点,反正慢慢找,一共就那么多文件。最后发现在b.smali里面有个button比较像,

 

这里的addView大家一看就应该知道怎么回事了,一删了事。(其实你也可以保留按钮,把按钮的点击事件替换掉,但是smali文件里面的代码太乱了,像onclicklistener这些内部类会被分散到比如b$1.smali之类的文件中,找起来太麻烦了)。然后重新打包签名运行下试试,就会发现确认付费按钮已经消失了,直接取消付费就成功购买到东西了,另外,这个修改其实对所有用移动计费的都是通用的,下次别的游戏直接用这次修改的替换文件就可以直接打包了,省的去一个个找。

 


原创粉丝点击