接触安卓逆向快一个月了,一个月时间从从未接触安卓到能搞定一些内购,smail签名验证,so签名验证,dex的md5验证,去积分限制,去广告等等,还是有点小成就的。今天就把握第一次搞定的软件的方法贴出来,供和我一样想学安卓逆向的小伙伴们分享。大神们笑的时候小声点哈 这软件是款背单词软件,有vip限制,虽然不升级vip对“背单词”没什么影响,但vip有更全面的背单词功能,还是值得的。之前我还想过再过段时间干脆买吧,但在查询安卓去广告的时候,看到有内购破解方法,随即尝试破解。 对于从未接触过安卓(11.12号才第一次接触安卓)的人来说,要破解一个软件根本无法下手的,还好有伟大的hello world来说,还不算难事。多接触段时间后,发现教程还是挺多的。在不断的尝试后,最后成功了,那一刻的激动… 好了,开始吧 1.首先来到软件的支付界面,选择网银支付(之所以选网银是其他支付都要装插件,麻烦),打开网银支付界面后,我不想支付,直接点退出,这时候会提示“支付取消”。好,那爆破点就在这四字上(图1)。
图1 2.打开androidkiller(使用之前需配置java变量,网上教程很多,搜索”配置java变量”即可),打开apk文件,让软件自己反编译apk,反编译完后会有提示。 3.点工程搜索,这时候在框框里敲入“支付取消”,搜索的出结果后,在结果上双击戳开,这时候单词软件内的很多提示都可以在这里看到了。“支付取消”对于的字符串是”payeco_plugin_pay_cancel”,很根据单词意思也能知道是支付取消,很直观的(图2)。
图2
好,现在再搜索”payeco_plugin_pay_cancel”,又可以得到很多结果(图3)。
图3
先打开field public staticfinal PAYECO_PLUGIN_PAY_CANCEL_RESPCODE那一段,秘密就在这里了。从这里可以看到支付成功,取消和失败对于的返回码。成功是”0000”,”0001”,”0002”。(图4).
图4 4. 我们再打开一个const-string v4, "payeco_plugin_pay_cancel",代码意思就是定义v4为支付取消,往上看,可以看到上面有一个const-stringv1, "0002",咦?0002不就是取消意思吗?如果把这个取消的0002改为0000会不会成功呢?那试试吧,把之前搜索出来的const-string v4, "payeco_plugin_pay_cancel"对应的0002全改为0000(图5).
图5
然后保存全部(ctrl+shift+s),回编译apk包(有了这类软件好方便了,最开始执行这些还是在命令提示符下敲代码。我用的时候不敲代码,也不知道这软件,而是提出apk包里的dex,然后反编译dex,再用notepad++搜索,编辑,再打包成dex,放回apk内再签名…)将原版卸载后安装,不然提示版本不对。本抱着激动的心情打开软件,却提示“您好,如果您喜欢,请支持正版,谢谢!”,开来是有啥验证。 5. 好,那再搜索“请支持正版”,得到一个结果,提示对于的字符串是”sup”(图6)
图6
那再搜索”sup”,这下看到一个id="0x7f060152"(图7)
图7
那再搜索"0x7f060152"关键的地方来了。这里不好描述,就备注在图片里(图8)
图8
可以看出if-nez v4,cond_0那里是一个关键。如果v4不等于0,就执行cond_0的代码,等于0的话就执行下面的代码,循环提示支持正版。那要跳过这里,直接执行cond_0的话,也很简单,那直接把if-nez v4,改为goto,意思就是直接跳到cond_0代码处。改了后,保存,安装,运行,不提示支持正版啦,说明我们改那个goto是成功的。然后点到支付页面,这时候激动人心的时刻到啦,我们直接点退出-确定,软件提示“支付取消 尽快到用户中心激活特权…”,背后提示“升级vip成功…”(图9)
图9 这难道说是破解成功了?? 那直接退出,再次进入,提示vip已开通,再点支付的话也提示已经开通vip了,然后试试vip的功能,哈哈,已经可以使用了(图10)
图10
啦儿啦,啦儿啦,啦儿啦啦,到此为止就顺利搞定了这款软件了。别激动,还有惊喜,我们可以按提示登录账号,然后备份资料后,退出,再安装原版的,再登录账号,哈哈,又会提示vip已开通,那这样的话就没这样了…
|