火柴人联盟V1.5.3 过验证
前几天研究了火柴联盟的验证。从网上得到火柴人联盟V1.5.3 的Apk,用Killer重新编译后就出现这种情况:
感谢群里的各路大神提醒,这个是网络验证的。我模拟器没有网,破解内购后能运行,放在真机上就弹出了版权声明
这是我用Fiddler抓到的数据包:
这个包里有很多关键的信息了,我已经用红色圈出来了。
我选择1103,换成16进制0x44f(smali反编译出来的数值都是16进制表示的),用Killer搜索。
都是在同一个文件中,文件名AddBlackName.. ??添加黑名单。够狠,这名字真浪。。
用jd-gui打开这个文件,搜索刚才的状态码:1103 (这回是10进制的)
this.updateItem.setTitle(paramString.getString("authTitle"));
this.updateItem.setDescription(paramString.getString("authDesc"));
authTitle和authDesc就是数据包里json数据的字段名..... 经检测XXX
可以断定,这里应该是调用显示什么的。所以这个if分支是必须去掉的。
invoke-virtual/range {v26 .. v26}, Lcn/mycompany/addblackname/item/UpdateItem;->getStatus()I
move-result v26
const/16 v27, 0x44f
move/from16 v0, v26
move/from16 v1, v27
if-ne v0, v1, :cond_2
大概就是拿 getStatus() 的返回值与 0x44f 比较。 如果不相等就跳转到 :cond_2。
很显然,要干掉它,就必须无条件跳转过去。
if-ne v0, v1, :cond_2 改为goto :cond_2
以上是第一处搜索出来的0x44f,Killer一共搜索出了三处。
第二处:
invoke-virtual/range {v26 .. v26}, Lcn/mycompany/addblackname/item/UpdateItem;->getStatus()I
move-result v26
const/16 v27, 0x44f
move/from16 v0, v26
move/from16 v1, v27
if-ne v0, v1, :cond_3 改为 goto :cond_3
第三处:
invoke-static {v3, v4}, Lcn/mycompany/addblackname/utils/PreferUtil;->getIntValue(Landroid/content/Context;Ljava/lang/String;)I
move-result v3
const/16 v4, 0x44f
if-ne v3, v4, :cond_0 改为 goto :cond_0
修改完后就能重编译,然后慢慢破解内购了。
下面是个人总结的经验,不喜勿喷,大神勿喷:
破解内购或者其他一类东西的时候,如果能找到状态码或者回调钩子一类的东西就很容易了,虽然改的地方很多,但是不会漏点,而且每处修改的地方代码样式都差距不大。
我先坐沙发 一下十进制,一下十六进制没搞懂什么情况{:4_96:} ken 发表于 2016-1-30 21:18
一下十进制,一下十六进制没搞懂什么情况
smali反汇编出来的文件数值是16进制的,jd-GUI还原的java中数值都是10进制表示的。 无名大牛,求出个愚公移山的教程,我之前试了N次,总是不成功,移动的,谢谢 半盏流年 发表于 2016-1-30 22:08
无名大牛,求出个愚公移山的教程,我之前试了N次,总是不成功,移动的,谢谢 ...
{:4_88:}我不是什么大神,才学这玩意几天,但是可以帮你看看,网上都是破解好的,能发一下原版吗? 无名侠 发表于 2016-1-30 21:21
smali反汇编出来的文件数值是16进制的,jd-GUI还原的java中数值都是10进制表示的。...
懂了 {:4_94:} 谢谢分享。。。。支持一下呀。 无名侠 发表于 2016-1-30 22:47
我不是什么大神,才学这玩意几天,但是可以帮你看看,网上都是破解好的,能发一下原版吗? ...
http://www.wandoujia.com/apps/com.heitao.ygys.wdj
谢谢啦 学习前辈经验{:4_86:}
页:
[1]