本帖最后由 小试锋芒 于 2014-9-9 19:45 编辑
破解安卓软件的积分 之二
菜鸟发贴,难免有错误之处请各位赐教。菜鸟哈 高手可以绕道…… 高手勿喷!!! 反编译只做研究之用,请勿用于商业用途,否则后果自负!!!! 软件名称:xxx界面美化软件 所用工具:apk反编译软件、Notepad++等
作者:zzcqm 软件说明:点击相应选项会弹出如下提示:
==================== 破解后效果图 ====================
PS:皮肤可选软件提供的,也可以自定义……
=================== 我是美丽的分割线 ===================
破解开始: 1、将apk文件反编译(包括classes.dex)此步方法请百度,有很多教程…… 2、根据窗口提示的字符串在反编译后的apk文件中查找,最终在strings.xml文件中找到这样一句:<string name="detail">您的积分不足,每次使用本功能您会消耗5个积分,点击确定下载推荐应用免费获取积分</string> PS:有两个strings.xml文件,其中一个是英文提示,另一个是中文提示,但它们定义的名字是一样的,所以找谁无所谓。 3、在public.xml文件中找到这一句: <public type="string" name="detail" id="0x7f04000c" /> 注意"detail"的名字与类型是与前面找到的对应的。 4、到了这一步,高手可能直接在smali文件中修改代码,但smali文件很难懂,所以像我这样的菜鸟还是先看看classes.dex反编译后的代码吧! 5、在classes.dex反编译后的代码中查找2130968588(0x7f04000c的10进制),找到这个函数: public void showDialog() { new AlertDialog.Builder(this).setTitle(2130968586).setMessage(2130968588).setPositiveButton(2130968583, new DialogInterface.OnClickListener() …… showDialog()就是上面图中积分不足的对话框。往上翻翻找有三处这样的判断: if (SkiSet.this.mypoint <= 0) //小于等于0 { SkiSet.this.showDialog(); //调用积分不足的提示 return; 6、再次到前面反编译的apk文件夹中的smali文件夹下搜索showDialog(),共搜索到6个文件,而三次判断分别在这三个文件中: SkiSet$4.smali;SkiSet$5.smali;SkiSet$6smali 代码都是这样: if-gtz v2, :cond_0 // gtz --> gez …… invoke-virtual {v2}, LSkin/com/org/SkiSet;->showDialog()V
|