当前位置:首页阅读

app破解

app破解

破解

app破解

從過年說起

過年的時候,父母手機上面裝上了一個某多多,然後過年時候突然見冒出了您有98塊錢待領取. 於是,點擊進去了,然後給出提示要100元才能提現金。然後開始了轉發,然後還是湊不夠100塊錢,然後,我就想着找個時間破解下這個騙取流量的機制。

功能

拿到apk,簡單看一下功能,和淘宝的购物网站差不多。商品可谓琳琅满目,还有些额外的小程序,下面是主页面。

破解apktool

apk的本质是一个压缩包,只是它使用了自己的一套机制进行的压缩。因此直接使用解压缩软件很多文件会出现乱码。因此需要专门的工具来进行解压缩,这个工具的名字叫做apktool。

apktool is a tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications. It also makes working with an app easier because of the project like file structure and automation of some repetitive tasks like building apk, etc.

反编译

使用apktool d apk名称即可对apk进行反编译操作,其中d代表decode。

app破解_WWW.XUNWANGBA.COM

解压缩之后的文件如下所示:

app破解_WWW.XUNWANGBA.COM

可以看出asserts、res、lib、AndroidManifest、smali文件等都被解压出来了。Smali是Android虚拟机识别的指令代码,和dex文件可以相互转换。

查看权限

如下是在AndroidManifest中申请的权限:

uses-permission android:name=android.permission.INTERNET/

uses-permission android:name=android.permission.ACCESS_WIFI_STATE/

uses-permission android:name=android.permission.ACCESS_NETWORK_STATE/

uses-permission android:maxSdkVersion=29 android:name=android.permission.READ_PHONE_STATE/

uses-permission android:name=android.permission.READ_PHONE_NUMBERS/

uses-permission android:name=android.permission.READ_LOGS/

uses-permission android:name=android.permission.READ_EXTERNAL_STORAGE/

uses-permission android:name=android.permission.WRITE_EXTERNAL_STORAGE/

uses-permission android:name=android.permission.CAMERA/

uses-permission android:name=android.permission.FLASHLIGHT/

uses-permission android:name=android.permission.READ_CONTACTS/

uses-permission android:name=android.permission.RECORD_AUDIO/

uses-permission android:name=android.permission.MODIFY_AUDIO_SETTINGS/

uses-permission android:name=android.permission.WAKE_LOCK/

uses-permission android:name=android.permission.GET_PACKAGE_SIZE/

uses-permission android:name=android.permission.REQUEST_INSTALL_PACKAGES/

uses-permission android:name=android.permission.BLUETOOTH/

permission android:name=com.xunmeng.pinduoduo.permission.lifecycle android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.permission.lifecycle/

uses-permission android:name=android.permission.WRITE_CALENDAR/

uses-permission android:name=com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE/

uses-permission android:name=com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE/

uses-permission android:name=android.permission.GET_TASKS/

uses-permission android:name=android.permission.VIBRATE/

permission android:name=com.xunmeng.pinduoduo.permission.MIPUSH_RECEIVE android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.permission.MIPUSH_RECEIVE/

uses-permission android:name=com.meizu.flyme.push.permission.RECEIVE/

permission android:name=com.xunmeng.pinduoduo.push.permission.MESSAGE android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.push.permission.MESSAGE/

uses-permission android:name=com.meizu.c2dm.permission.RECEIVE/

permission android:name=com.xunmeng.pinduoduo.permission.C2D_MESSAGE android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.permission.C2D_MESSAGE/

permission android:name=com.xunmeng.pinduoduo.remote_config android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.remote_config/

uses-permission android:name=android.permission.ACCESS_FINE_LOCATION/

uses-permission android:name=android.permission.ACCESS_COARSE_LOCATION/

uses-permission android:name=com.xunmeng.pinduoduo.permission.NOTIFICATION_RECORD/

permission android:name=com.xunmeng.pinduoduo.permission.NOTIFICATION_RECORD android:protectionLevel=signature/

uses-permission android:name=android.permission.CHANGE_NETWORK_STATE/

uses-permission android:name=com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY/

uses-permission android:name=android.permission.SYSTEM_ALERT_WINDOW/

uses-permission android:name=android.permission.FOREGROUND_SERVICE/

uses-permission android:name=android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS/

uses-permission android:name=android.permission.AUTHENTICATE_ACCOUNTS/

uses-permission android:name=android.permission.GET_ACCOUNTS/

uses-permission android:name=android.permission.MANAGE_ACCOUNTS/

uses-permission android:name=android.permission.READ_SYNC_SETTINGS/

uses-permission android:name=android.permission.READ_SYNC_STATS/

uses-permission android:name=android.permission.WRITE_SYNC_SETTINGS/

uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED/

permission android:name=com.xunmeng.pinduoduo.permission.JPUSH_MESSAGE android:protectionLevel=signature/

uses-permission android:name=com.xunmeng.pinduoduo.permission.JPUSH_MESSAGE/

uses-permission android:name=com.coloros.assistantscreen.permission.XCARD_INSTANT_SERVICE/

uses-permission android:name=android.permission.READ_PRIVILEGED_PHONE_STATE/

uses-permission android:name=com.android.launcher.permission.READ_SETTINGS/

uses-permission android:name=com.android.launcher.permission.WIRTE_SETTINGS/

uses-permission android:name=com.android.launcher.permission.ID/

uses-permission android:name=com.samsung.android.launcher.permission.READ_SETTINGS/

uses-permission android:name=com.sec.android.provider.badge.permission.READ/

uses-permission android:name=com.sec.android.provider.badge.permission.WRITE/

uses-permission android:name=com.bbk.launcher2.permission.READ_SETTINGS/

uses-permission android:name=com.bbk.launcher2.permission.WRITE_SETTINGS/

uses-permission android:name=com.oppo.launcher.permission.READ_SETTINGS/

uses-permission android:name=com.oppo.launcher.permission.WRITE_SETTINGS/

uses-permission android:name=net.oneplus.launcher.permission.READ_SETTINGS/

uses-permission android:name=net.oneplus.launcher.permission.WRITE_SETTINGS/

uses-permission android:name=com.android.launcher.permission.INSTALL_SHORTCUT/

queries

package android:name=com.tencent.mobileqq/

package android:name=com.tencent.mm/

package android:name=com.sina.weibo/

package android:name=com.eg.android.AlipayGphone/

/queries

permission android:name=com.xunmeng.pinduoduo.XLOG_UPLOAD_RECEIVER android:protectionLevel=normal/

uses-permission android:name=com.xunmeng.pinduoduo.XLOG_UPLOAD_RECEIVER/

uses-feature android:name=android.hardware.touchscreen android:required=false/

uses-feature android:name=android.software.leanback android:required=false/

uses-permission android:name=android.permission.BLUETOOTH_ADMIN/

uses-feature android:name=android.hardware.camera/

uses-permission android:name=android.permission.ACCESS_MEDIA_LOCATION/

uses-permission android:name=android.permission.WRITE_SETTINGS/

uses-permission android:name=com.vivo.assistant.StepProvider/

uses-permission android:name=com.vivo.assistant.permission.access.provider/

uses-permission android:name=com.vivo.assistant.permission.sport.broadcast/

uses-permission android:name=android.permission.USE_BIOMETRIC/

uses-permission android:name=android.permission.USE_FINGERPRINT/

比较危险的权限

uses-permissionandroid:name=android.permission.READ_PHONE_NUMBERS/ 获取手机号码

uses-permissionandroid:name=android.permission.CAMERA/ 请求访问使用照相设备

uses-permissionandroid:name=android.permission.READ_CONTACTS/ 允许程序读取用户联系人数据

uses-permissionandroid:name=android.permission.ACCESS_FINE_LOCATION/ 允许一个程序访问精良位置(如GPS)

uses-permissionandroid:name=android.permission.RECORD_AUDIO/ 允许程序录制视频

uses-permissionandroid:name=android.permission.MANAGE_ACCOUNTS/ 允许程序管理AccountManager中的账户列表

uses-permissionandroid:name=android.permission.RECEIVE_BOOT_COMPLETED/ 允许一个程序接收到ACTIONBOOTCOMPLETED广播在系统完成启动,就是开机启动权限

修改文件

在很多时候需要对app进行调试,这个时候可以通过在AndroidManifest.xml中添加如下的代码:

android:debuggable=true

这时app就能够调试了。

app破解_WWW.XUNWANGBA.COM

重新打包

修改文件之后,需要重新编译打包。使用如下的命令进行打包,其中的b代表build:

apktool b pdd pdd.apk

很不幸运的事情发生了,居然报错了。很显然,某多多采用了保护措施。通过查看错误提示,应该和.9.jpg格式有关,推测可能是apktool版本的问题。

app破解_WWW.XUNWANGBA.COM

获取最新apktool

不得已,用上github了,在这里获取到最新的apktool的源代码。编译。重新打包,出现了另外一种错误。如下图所示:

app破解_WWW.XUNWANGBA.COM

问题分析

通过比较下面3个文件可知,根据在public.xml中的qq是找不到属性normalTextColor的。

app破解_WWW.XUNWANGBA.COM

某多多明显使用了资源混淆技术。资源混淆技术在后面会详细介绍,这种技术可以实现app瘦身以及提高破解难度的功能。

问题解决

通过上面的分析可知是在解析过程中出现了资源混淆,需要修改源码,比较麻烦,暂时不用修改源码的方式,后续会介绍。

由于重新编译失败,可以考虑不反编译apk。直接对二进制文件进行修改,然后将修改的二进制文件直接放入压缩包。

要让apk可调试,需要添加debuggable属性,本文使用的工具是AXMLEditor,可以通过如下的命令来实现添加debuggable属性。

java -jar AXMLEditor.jar -attr -i application com.xunmeng.pinduoduo.app.SampleApplication debuggable true AndroidManifest.xml AndroidManifest_new.xml

签名

在压缩包中把META-INF删除,这样以前的签名就被清除了。

生成burning.keystore

keytool -genkey -alias burning -keyalg RSA -validity 36500 -keystore burning.keystore

使用jarsigner进行签名

jarsigner -verbose -keystore burning.keystore -signedjar pdd_signed.apk pdd.apk burning

安装,查看主页面可知多出了非官方发布版本的字样,说明重新签名成功,具体如图

app破解_WWW.XUNWANGBA.COM

调试

可以使用jeb进行调试,后文会详细讲解。

写在最后

开发一个apk可能需要很久的周期,而破解一个apk可能只需要一两周。无论apk加壳、加固、混淆等,这些技术都只是增加破解难度而无法阻止破解。

在2015年、2016年一大批相似的聊天软件能够出现,大部分原因就是当时市场还不规范,审核不够严格,而这些相似的软件基本都是反编译一个apk而产生的,最神奇的是他们的服务器都是一家的。

公众号

app破解_WWW.XUNWANGBA.COM

以上就是(app破解)全部内容,收藏起来下次访问不迷路!

上一篇:某天
下一篇:没有了