最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

app破解

2020-07-13 22:12 作者:無情劍客Burning  | 我要投稿

聲明:本篇文禁止用作商業(yè)目的,謝絕一切形式的轉(zhuǎn)載。 @[toc]

從過年說起

過年的時(shí)候,父母手機(jī)上面裝上了一個(gè)某多多,然後過年時(shí)候突然見冒出了"您有98塊錢待領(lǐng)取". 於是,點(diǎn)擊進(jìn)去了,然後給出提示要100元才能提現(xiàn)金。然後開始了轉(zhuǎn)發(fā),然後還是湊不夠100塊錢,然後,我就想著找個(gè)時(shí)間破解下這個(gè)騙取流量的機(jī)制。

功能

拿到apk,簡單看一下功能,和淘寶的購物網(wǎng)站差不多。商品可謂琳瑯滿目,還有些額外的小程序,下面是主頁面。

破解

apktool

apk的本質(zhì)是一個(gè)壓縮包,只是它使用了自己的一套機(jī)制進(jìn)行的壓縮。因此直接使用解壓縮軟件很多文件會(huì)出現(xiàn)亂碼。因此需要專門的工具來進(jìn)行解壓縮,這個(gè)工具的名字叫做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進(jìn)行反編譯操作,其中d代表decode。

解壓縮之后的文件如下所示:

可以看出asserts、res、lib、AndroidManifest、smali文件等都被解壓出來了。Smali是Android虛擬機(jī)識(shí)別的指令代碼,和dex文件可以相互轉(zhuǎn)換。

查看權(quán)限

如下是在AndroidManifest中申請的權(quán)限:

  1. ? ?<uses-permission android:name="android.permission.INTERNET"/>

  2. ? ?<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

  3. ? ?<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

  4. ? ?<uses-permission android:maxSdkVersion="29" android:name="android.permission.READ_PHONE_STATE"/>

  5. ? ?<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>

  6. ? ?<uses-permission android:name="android.permission.READ_LOGS"/>

  7. ? ?<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

  8. ? ?<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  9. ? ?<uses-permission android:name="android.permission.CAMERA"/>

  10. ? ?<uses-permission android:name="android.permission.FLASHLIGHT"/>

  11. ? ?<uses-permission android:name="android.permission.READ_CONTACTS"/>

  12. ? ?<uses-permission android:name="android.permission.RECORD_AUDIO"/>

  13. ? ?<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

  14. ? ?<uses-permission android:name="android.permission.WAKE_LOCK"/>

  15. ? ?<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>

  16. ? ?<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

  17. ? ?<uses-permission android:name="android.permission.BLUETOOTH"/>

  18. ? ?<permission android:name="com.xunmeng.pinduoduo.permission.lifecycle" android:protectionLevel="signature"/>

  19. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.permission.lifecycle"/>

  20. ? ?<uses-permission android:name="android.permission.WRITE_CALENDAR"/>

  21. ? ?<uses-permission android:name="com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE"/>

  22. ? ?<uses-permission android:name="com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"/>

  23. ? ?<uses-permission android:name="android.permission.GET_TASKS"/>

  24. ? ?<uses-permission android:name="android.permission.VIBRATE"/>

  25. ? ?<permission android:name="com.xunmeng.pinduoduo.permission.MIPUSH_RECEIVE" android:protectionLevel="signature"/>

  26. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.permission.MIPUSH_RECEIVE"/>

  27. ? ?<uses-permission android:name="com.meizu.flyme.push.permission.RECEIVE"/>

  28. ? ?<permission android:name="com.xunmeng.pinduoduo.push.permission.MESSAGE" android:protectionLevel="signature"/>

  29. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.push.permission.MESSAGE"/>

  30. ? ?<uses-permission android:name="com.meizu.c2dm.permission.RECEIVE"/>

  31. ? ?<permission android:name="com.xunmeng.pinduoduo.permission.C2D_MESSAGE" android:protectionLevel="signature"/>

  32. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.permission.C2D_MESSAGE"/>

  33. ? ?<permission android:name="com.xunmeng.pinduoduo.remote_config" android:protectionLevel="signature"/>

  34. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.remote_config"/>

  35. ? ?<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

  36. ? ?<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

  37. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.permission.NOTIFICATION_RECORD"/>

  38. ? ?<permission android:name="com.xunmeng.pinduoduo.permission.NOTIFICATION_RECORD" android:protectionLevel="signature"/>

  39. ? ?<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

  40. ? ?<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"/>

  41. ? ?<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

  42. ? ?<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  43. ? ?<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

  44. ? ?<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>

  45. ? ?<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

  46. ? ?<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>

  47. ? ?<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>

  48. ? ?<uses-permission android:name="android.permission.READ_SYNC_STATS"/>

  49. ? ?<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>

  50. ? ?<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

  51. ? ?<permission android:name="com.xunmeng.pinduoduo.permission.JPUSH_MESSAGE" android:protectionLevel="signature"/>

  52. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.permission.JPUSH_MESSAGE"/>

  53. ? ?<uses-permission android:name="com.coloros.assistantscreen.permission.XCARD_INSTANT_SERVICE"/>

  54. ? ?<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>

  55. ? ?<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>

  56. ? ?<uses-permission android:name="com.android.launcher.permission.WIRTE_SETTINGS"/>

  57. ? ?<uses-permission android:name="com.android.launcher.permission.ID"/>

  58. ? ?<uses-permission android:name="com.samsung.android.launcher.permission.READ_SETTINGS"/>

  59. ? ?<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>

  60. ? ?<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>

  61. ? ?<uses-permission android:name="com.bbk.launcher2.permission.READ_SETTINGS"/>

  62. ? ?<uses-permission android:name="com.bbk.launcher2.permission.WRITE_SETTINGS"/>

  63. ? ?<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>

  64. ? ?<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>

  65. ? ?<uses-permission android:name="net.oneplus.launcher.permission.READ_SETTINGS"/>

  66. ? ?<uses-permission android:name="net.oneplus.launcher.permission.WRITE_SETTINGS"/>

  67. ? ?<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>

  68. ? ?<queries>

  69. ? ? ? ?<package android:name="com.tencent.mobileqq"/>

  70. ? ? ? ?<package android:name="com.tencent.mm"/>

  71. ? ? ? ?<package android:name="com.sina.weibo"/>

  72. ? ? ? ?<package android:name="com.eg.android.AlipayGphone"/>

  73. ? ?</queries>

  74. ? ?<permission android:name="com.xunmeng.pinduoduo.XLOG_UPLOAD_RECEIVER" android:protectionLevel="normal"/>

  75. ? ?<uses-permission android:name="com.xunmeng.pinduoduo.XLOG_UPLOAD_RECEIVER"/>

  76. ? ?<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>

  77. ? ?<uses-feature android:name="android.software.leanback" android:required="false"/>

  78. ? ?<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

  79. ? ?<uses-feature android:name="android.hardware.camera"/>

  80. ? ?<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>

  81. ? ?<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

  82. ? ?<uses-permission android:name="com.vivo.assistant.StepProvider"/>

  83. ? ?<uses-permission android:name="com.vivo.assistant.permission.access.provider"/>

  84. ? ?<uses-permission android:name="com.vivo.assistant.permission.sport.broadcast"/>

  85. ? ?<uses-permission android:name="android.permission.USE_BIOMETRIC"/>

  86. ? ?<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

比較危險(xiǎn)的權(quán)限

  • <uses-permissionandroid:name="android.permission.READ_PHONE_NUMBERS"/>?獲取手機(jī)號(hào)碼

  • <uses-permissionandroid:name="android.permission.CAMERA"/>?請求訪問使用照相設(shè)備

  • <uses-permissionandroid:name="android.permission.READ_CONTACTS"/>?允許程序讀取用戶聯(lián)系人數(shù)據(jù)

  • <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>?允許一個(gè)程序訪問精良位置(如GPS)

  • <uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>?允許程序錄制視頻

  • <uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/>?允許程序管理AccountManager中的賬戶列表

  • <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>?允許一個(gè)程序接收到ACTIONBOOTCOMPLETED廣播在系統(tǒng)完成啟動(dòng),就是開機(jī)啟動(dòng)權(quán)限

更多權(quán)限相關(guān)的內(nèi)容會(huì)在后續(xù)文章中介紹。

修改文件

在很多時(shí)候需要對app進(jìn)行調(diào)試,這個(gè)時(shí)候可以通過在AndroidManifest.xml中添加如下的代碼:

  1. android:debuggable="true"

這時(shí)app就能夠調(diào)試了。

重新打包

修改文件之后,需要重新編譯打包。使用如下的命令進(jìn)行打包,其中的b代表build:

  1. apktool b pdd pdd.apk

很不幸運(yùn)的事情發(fā)生了,居然報(bào)錯(cuò)了。很顯然,某多多采用了保護(hù)措施。通過查看錯(cuò)誤提示,應(yīng)該和.9.png格式有關(guān),推測可能是apktool版本的問題。

獲取最新apktool

不得已,用上github了,在這里獲取到最新的apktool的源代碼。編譯。重新打包,出現(xiàn)了另外一種錯(cuò)誤。如下圖所示:

問題分析

通過比較下面3個(gè)文件可知,根據(jù)在public.xml中的"qq"是找不到屬性"normalTextColor"的。

某多多明顯使用了資源混淆技術(shù)。資源混淆技術(shù)在后面會(huì)詳細(xì)介紹,這種技術(shù)可以實(shí)現(xiàn)app瘦身以及提高破解難度的功能。

問題解決

通過上面的分析可知是在解析過程中出現(xiàn)了資源混淆,需要修改源碼,比較麻煩,暫時(shí)不用修改源碼的方式,后續(xù)會(huì)介紹。

由于重新編譯失敗,可以考慮不反編譯apk。直接對二進(jìn)制文件進(jìn)行修改,然后將修改的二進(jìn)制文件直接放入壓縮包。

要讓apk可調(diào)試,需要添加debuggable屬性,本文使用的工具是AXMLEditor,可以通過如下的命令來實(shí)現(xiàn)添加debuggable屬性。

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

簽名

在壓縮包中把META-INF刪除,這樣以前的簽名就被清除了。

  1. 生成burning.keystore

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

  1. 使用jarsigner進(jìn)行簽名

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

  1. 安裝,查看主頁面可知多出了"非官方發(fā)布版本"的字樣,說明重新簽名成功,具體如圖?

調(diào)試

可以使用jeb進(jìn)行調(diào)試,后文會(huì)詳細(xì)講解。

寫在最后

開發(fā)一個(gè)apk可能需要很久的周期,而破解一個(gè)apk可能只需要一兩周。無論apk加殼、加固、混淆等,這些技術(shù)都只是增加破解難度而無法阻止破解。

在2015年、2016年一大批相似的聊天軟件能夠出現(xiàn),大部分原因就是當(dāng)時(shí)市場還不規(guī)范,審核不夠嚴(yán)格,而這些相似的軟件基本都是反編譯一個(gè)apk而產(chǎn)生的,最神奇的是他們的服務(wù)器都是一家的。

公眾號(hào)

更多內(nèi)容,歡迎關(guān)注公眾號(hào):無情劍客。



app破解的評論 (共 條)

分享到微博請遵守國家法律
左云县| 白朗县| 同德县| 三穗县| 临汾市| 无棣县| 英吉沙县| 海晏县| 甘泉县| 平乡县| 龙海市| 和龙市| 襄樊市| 喜德县| 周至县| 石河子市| 沾益县| 澄城县| 皮山县| 广元市| 南溪县| 阿坝县| 岗巴县| 尼木县| 健康| 广宗县| 壤塘县| 广河县| 崇义县| 安康市| 云安县| 淳化县| 托里县| 磐安县| 永安市| 留坝县| 通州区| 山阳县| 千阳县| 留坝县| 文昌市|