首页 > 最新公告 > Android APP 被二次打包过程大揭密!

Android APP 被二次打包过程大揭密!

日期:2015-01-07

盗版应用一直是制约移动互联网健康发展的毒瘤,破解者在盗版应用中植入恶意代码,用户一旦下载使用这些应用,就会在毫不知情的情况下被吸资扣费、消耗流量甚至泄露隐私,不但影响开发者的收益,还会严重破坏其品牌形象。

不要以为盗版应用离我们很遥远,事实上,由于安卓的开放性,这个操作根本算不上是高深的技术活儿。破解者只需简单几个步骤,分分钟就可以将一款APP进行篡改并二次打包。360加固保就为大家揭秘APP被二次打包的全过程。

通常二次打包的步骤是:解包(反编译)-->插入/篡改代码-->生成新包-->重签名-->运行。

首先可以通过使用ApkTool、Jeb、baksmali/smali等反编译工具,反编译apk安装包,图1为调用baksmali文件的截图。


图1调用baksmali文件

解包后可以看到所有文件列表,找到需要修改的smali文件,这里修改的是MainActivity.smali,如图2。


图2修改MainActivity.smali

解开MainActivity.smali文件后,在里面插入一段篡改代码,修改登录界面中“Button”按钮上的文本,图3和图4是修改前后smali文件中的代码。  


图3修改前的smali文件

图4修改后的smali文件

修改后再调用smali.jar文件,将smali重新打包成dex文件,如图5所示。


图5将smali重新打包

接下来再将新生成的classes.dex文件替换原安装包中的classes.dex,并进行重新签名,就生成了一款盗版应用。运行该款盗版应用时会发现登录界面的登录按钮被修改替换成了“Fake Btn”,如图6、图7所示。


图6篡改前的界面

图7篡改后的界面

通过简单的几个操作步骤,一款未经加固保护的APP就被盗版了,一个团队一年的劳动成果几分钟内就被轻易窃取。通常,盗版应用会通过插入/替换广告SDK赚取广告收入、修改支付渠道截取开发者收入、插入病毒/木马程序盗取用户信息等形式出现,操作步骤与上面介绍的类似,严重侵害了开发者和用户的利益。

要想保护手机APP,避免被盗版,就要从源头进行加固保护,让破解者无从下手。图8是使用360加固保对APP进行加固前后的对比,加固后再调用baksmali.jar进行反编译,可以看到代码文件全部被隐藏,暴露的只是加固程序的一些代码,破解者自然无法再对源程序进行篡改了。


图8加固后展现的代码

360加固保基于360核心加密技术,对安卓应用进行加固保护,能有效避免应用被恶意破解、反编译、二次打包、内存抓取等。同时给应用提供数据加密、签名校验、防内存修改、完整性校验、盗版监测等保护功能,给予安卓应用最强保护,从源头消灭恶意盗版应用。作为移动互联网安全服务行业的领跑者,360加固保将持续关注手机应用安全的发展,不断完善加固保服务,切实保护开发者收入和权益。