1、 通常二次打包的步骤是:解包(反编译)-->插入/篡改代码-->生成新包-->重签名-->运行。 首先可以通过使用ApkTool、Jeb、baksmali/smali等反编译工具,反编译apk安装包,图1为调用baksmali文件的截图。
2、 解包后可以看到所有文件列表,找到需要修改的smali文件,这里修改的是MainActivity.smali,如图2。
3、 解开MainActivity.smali文件后,在里面插入一段篡改代码,修改登录界面中“Button”按钮上的文本,图3和图4是修改前后smali文件中的代码。
4、 修改后再调用smali.jar文件,将smali重新打包成dex文件,如图5所示。
5、 接下来再将新生成的classes.dex文件替换原安装包中的classes.dex,并进行重新签名,就生成了一款盗版应用。运行该款盗版应用时会发现登录界面的登录按钮被修改替换成了“Fake Btn”,如图6、图7所示。
6、 通过简单的几个操作步骤,一款未经加固保护的APP就被盗版了,一个团队一年的劳动成果几分钟内就被朕炔损腱轻易窃取。通常,盗版应用会通过插入/替换广告SDK赚取广告收入、修改支付渠道截取开发者收入、插入病毒/木马程序盗取用户信息等形式出现,操作步骤与上面介绍的类似,严重侵害了开发者和用户的利益。
7、 要想保护手机APP,避免被盗版,就要从源头进行加固保护,让破解者无从下手。图8是使用360加固诺蝈胂叟保对APP进行加固前后的对比,加固后再调用baksmali.jar进行反编译,可以看到代码文件全部被隐藏,暴露的只是加固程序的一些代码,破解者自然无法再对源程序进行篡改了。
8、 360加固保基于360核心加密技术,对安卓应用进行加固保护,能有效避免应用被恶意破解、反编译、蘑节侍遑二次打包、内存抓取等。同时给应用提供数据加密、签名校验、防内存修改、完整性校验、盗版监测等保护功能,给予安卓应用最强保护,从源头消灭恶意盗版应用。作为移动互联网安全服务行业的领跑者,360加固保将持续关注手机应用安全的发展,不断完善加固保服务,切实保护开发者收入和权益。