2、系统变量→新建
变量名:JA_HOME
变量值:(变量值填写你的jdk的安装目录,例如本人是 E:\Java\jdk1.7.0)
3、在系统变量中找到 Path 变量,选择编辑
在变量值最后输入 %JA_HOME%\bin;%JA_HOME%\jre\bin;
(注意如果原来Path的变量值末尾没有 ; 号,就先输入 ; 号再输入上面的代码)
4、系统变量→新建
变量名:CLASSPATH
变量值:.;%JA_HOME%\lib;%JA_HOME%\lib\tools.jar(注意最前面有一点)
到这系统变量就配置完毕了。
5、检验jdk是否配置成功:运行cmd 输入 java -version (java 和 -version 之间有空格),如果能正常显示java版本号码,就说明配置成功了
破解案例以《diao丝保卫战》为例子
在游戏未进行任何安全保护措施前,破解者可以轻松将apk文件用winrar打开,将lib/armeabi/libcocos2dcpp.so文件解压出来之后用IDA(一款专业的逆向工具)打开。在IDA解析完成之后,搜索MyLoadBegin函数即可看到初始化的钻石数量,金币数量,vip等级等,这正是破解者进行破解的突破点。通过安卓修改进行反向工程后,即可获得项目源代码,找到金币配置的相关代码,如图1所示, 10000为金币数量,100为钻石数量。
图1 初始化金币和钻石数值
通过图2则可以判断该代码是决定VIP等级的部分。
图2 初始化VIP等级数值
找到初始化数据后,破解者就可以对其进行任意数值和参数的篡改了,图3和图4是对游戏内的金币与钻石的初始化数值进行篡改的前后对比图。
图3 金币与钻石数值篡改前
图4 金币与钻石数值篡改后
图5和图6是对VIP等级进行篡改的前后对比图。
图5 VIP等级篡改前
图6 VIP等级篡改后
经过上面的数值篡改,前台页面最终展示的结果如图7和图8所示,能看到,钻石数量由初始的100改成了99999,金币数量由10000改成了99999。
图7钻石和金币数量篡改前
图8 钻石和金币数量篡改后
同时,如图9和图10所示,VIP等级也已经从初始的VIP1达到了满级。
图9 VIP等级篡改前
图10 VIP等级篡改后
通过以上几个简单步骤,就完了对游戏的破解和篡改。对破解者而言,利用安卓修改来进行反编译,这只是分分钟的事情,而对于游戏开发者,却是多少个加班和心血被付诸东流的惨剧。
魔高一尺道高一丈,越来越多的手游开发者为避免重蹈覆辙,已经提高了应用安全意识,开始通过第三方加固服务或代码混淆等多重手段来防御破解者的攻击。
本教程通过对最近流行的最美手电筒应用进行反编译并重新打包,实现在用户按下关闭手电筒按钮的时候,弹出一个提示弹窗,提示用户哈哈~你必须付钱才能关掉我,您确定现在就要付钱吗?,如果用户选择确定,将打开设置的网页,如果用户选择取消,将关闭应用。
好了,闲话少说,我来开始演示如何进行反编译和添加自定义代码吧~~
第一步,在安卓修改顶部的搜索框输入手电筒并开始搜索(见下图),搜索列表中出现很多匹配到手电筒关键字的应用,点击最美手电筒后面的一键安装按钮, 系统会自动弹出相关的反编译选项菜单,可以通过本菜单将应用安装到手机,或者查看源代码,也可以直接进行反编译。点击菜单中的反编译按钮,进入到该应用的反编译界面。
由于我们要实现的是点击关闭按钮后弹出一个提示窗口,因此我们需要先找到这个关闭按钮的图片资源,以便通过资源名称找到相应的界面和调用方法(如果是文字按钮,就更简单了,直接在安卓修改的搜索功能里面直接搜索按钮文字即可)。最美手电筒的原始界面如下。
我们在安卓修改的左侧点击高级模式,然后一层层展开目录列表,在drawable相关的目录里面浏览图片,找到和应用运行界面图对应的图片资源,如下图所示,分别是关闭状态和打开状态的图片。我们是要针对关闭按钮进行操作,所以关注一下关闭按钮的图片资源名称是 off 。
通过搜索功能或者直接在高级模式中浏览layout目录,打开相应的界面布局,我们仔细观察就可以找到Home.xml是这个最美手电筒的主界面,这个xml里面包含了上述的关闭按钮的图片资源名称。
双击打开Home.xml,我们可以清晰的看到这个按钮的图片资源名称和点击后调用的方法名称switchTorch,见下图。这个调用方法名称很重要,我们通过这个名称作为入口查询该方法所在的代码页面。
点击安卓修改的左侧搜索/替换功能,打开的界面中输入switchTorch进行搜索,将搜索到包含该关键字的所有的代码,通过双击打开每个代码页面分析,很快就能找到该方法所在的页面,如下图选中的一行。
双击打开该代码页面,可以看到,已经自动定位到了该调用方法,后续将通过在该方法里面添加代码,来实现弹出提示窗口的功能。
重要提示:上面罗嗦了半天,只是告诉你如何通过界面元素找到按钮对应的类文件和方法。如果您只是希望在应用程序主界面的创建(Oncreate)和程序聚焦(OnResume)和点击(Onclick)的地方添加小插件代码,可以利用安卓修改提供的功能直接添加。
下面详细介绍如何在指定界面的指定位置添加弹窗小插件。
在反编译界面,点击左侧面板的小插件(如果首次使用或者有新的插件版本,将自动提醒您更新),右侧的主窗体列出可用的插件列表,本次演示的是如何添加“确定对话框”,请在插件列表中点击确定选择对话框,鼠标在该列表上面悬浮的时候,会显示将来集成后的效果预览。在面板的右侧,列出插件描述和需要设置的参数,请根据要求设置合适的文字提示信息和按确定按钮后要做的操作。
确定按钮对应的操作可以是下面几种:
1、网址 ,点击确定按钮后打开外部浏览器访问该网站地址,可以是赞助地址、支付宝地址,引导用户访问产品信息或者引导用户赞助付款
2、QQ群:通过获取QQ群地址,将获取的地址填入网址输入框
3、打开QQ:格式为 mqqwpa://im/chat?chat_type=wpa&uin=qq号码 ,将上述代码填入网址输入框
4、其他的可通过手机浏览器可唤醒的链接,请自行百度
设置插件代码的点,点击上述界面的“设置点”按钮,打开的界面可以直接通过项目代码导航找到要添加代码的Smali文件类,也可以通过程序入口,找到相关的界面Activity,默认打开的类就是入口主界面的类文件,通过右侧编辑器顶部的下拉框可以导航找到需要的方法入口,一般是在Oncreate,Onresume,Onclick的地方添加代码点。也可以根据上面的介绍找到开关按钮对应的点击事件,在具体的位置添加点。
通过本功能设置代码的点,请确保点位于点击事件、OnCreate、OnResume等函数体内,并保证点是单独的空行(如果不是空行,请自行回车空出空行),然后点击本窗口底部的设置代码点进行设置,另外请确保点在local指令之后,return之前。
设置代码点后,点击前一页面的确定按钮,即可完成代码的工作。根据页面的提示完成打包,即可在手机上面查看效果了。
好了,到此为止已经基本大功告成了,我们点击安卓修改左侧的打包/签名功能,开始进行打包环节,打包后,系统会自动提示你是否需要安装到手机上。
下面就是我们的最终成果,安装到手机上并点击关闭手电筒按钮出现的效果。
您可以用这种方法反编译任何安卓应用哦。只要您愿意,您可以在任何应用上面添加任何功能。后面我们会出教程教大家如何添加任意功能,包括如何进行VIP会员的破解等等。
安卓优化非常强大,有更多更好玩的方法来折腾任何应用。都来玩玩看吧~我相信你一定能够玩出你的新花样。后面我们会推出更多的实例教程,教您如何破解游戏关卡,甚至在应用中添加自己的功能。
通过安卓修改,在任何应用添加自己的弹窗提示,是不是非常简单呢?好了,本期教程到此为止,大家快去试试看吧。
1、多渠道打包发布
通过已经打包的APK安装包作为模板,反编译后,动态修改配置文件或者SMALI代码中的渠道标志来实现批量重新多渠道打包,由于不是源代码级别的打包,所以大大提升了批量打包的速度和效率。
2、任意反编译安卓应用
自由定制任何没有加固过的APK安装包,可以修改应用程序图标和应用程序名称、替换界面上面的任何文字和图片、翻译或者汉化制作多语言版本,更支持通过高级的SMALI代码,实现对应用软件的破解
3、海量安卓应用、游戏模板
提供海量最新最全的应用作为定制模板,可以直接下载后进行反向工程、破解、修改、查看源代码、查看安装包信息等操作(部分应用由于做了加固,暂时不能进行反向工程)。
4、随机包名、应用名打包
可以通过本功能定时随机更换包名和应用名称重新打包,再配合网页下载程序,用户就可以实时下载到最新的安装包,避免了报毒等情况。
5、查看安卓应用源代码
经过对APK安装包进行反编译,然后通过反映射的方式获取源代码。反编译获取的JA代码适合对源代码进行分析,查看应用内部逻辑,不可进行反编译,反编译工程只能在SMALI代码基础上修改。
6、众多安卓应用反编译工具
软件还提供了大量的小工具,用来查看安装包信息,并可以在手机连接电脑的情况下,查看手机信息、实时日志、安装和管理手机的应用程序、管理手机的文件等等,并可以直接定制修改手机已经安装的应用程序。
软件提供的反编译功能,仅供安卓开发爱好者对安装包进行反编译研究之用,严禁将反编译之后的安装包作为商业用途。