一软能、加固
你不知道的Android SDK安全測(cè)試 - CSDN博客
二迎捺、逆向編程
國內(nèi)最權(quán)威的逆向論壇
逆向?qū)<?/h2>
https://github.com/android-hacker
https://blog.csdn.net/qq_21051503
逆向工具介紹
百度了很多資料,發(fā)現(xiàn)集成的逆向工具有很多查排,如APKKiller凳枝、APKIDE等,但是發(fā)現(xiàn)不是很好用跋核,兼容性太差岖瑰,沒有一個(gè)可以重新編譯打包成功的。這些集成的工具砂代,其實(shí)就是寫了些腳本蹋订,復(fù)用了一下Google官方的APKTool的一系列工具而已。
[原創(chuàng)]記某app內(nèi)購破解 – 安卓逆向菜鳥的初體驗(yàn)
https://bbs.pediy.com/thread-226040.htm
Android Killer:是一款可以對(duì)APK進(jìn)行反編譯的工具泊藕,它能夠?qū)Ψ淳幾g后的Smali文件進(jìn)行修改辅辩,并將修改后的文件進(jìn)行打包http://www.reibang.com/p/61a93a6c0c1b,雖然它對(duì)360脫殼沒有啥作用娃圆,但是它的Android相關(guān)的一些功能還是比較實(shí)用的,比如目錄瀏覽等 蛾茉。
下面我介紹一下用原生的工具如何進(jìn)行反編譯與重新打包的讼呢。
一、ApkTool
下載
可以參照這個(gè)博客:
https://blog.csdn.net/dreamer2020/article/details/52761606
http://www.reibang.com/p/47a5511e17bf
但是apktool.bat與apktool.jar我建議去官方下載最新的
首頁:https://ibotpeaches.github.io/Apktool/
怎么安裝:https://ibotpeaches.github.io/Apktool/install/
文檔說的很清楚谦炬,其實(shí)中國APKtool的博客鼻祖悦屏,就是照著這個(gè)翻譯的节沦。
使用
apktool.bat,注意win10在命令行運(yùn)行時(shí)要加上.\础爬,否則會(huì)報(bào)錯(cuò)如下:
其實(shí)最后的提示已經(jīng)告訴我我們答案甫贯。
- 反編譯
.\apktool.bat d -f E:\ApkNiXiang\MyTool\source\in\cn.wangxiao.zhuntiku_4.0_43.apk -o E:\ApkNiXiang\MyTool\source\out
參數(shù)說明:
d:表示執(zhí)行反編譯指令
-f:輸出目錄存在,也會(huì)強(qiáng)制覆蓋看蚜,不會(huì)提示叫搁。
E:\ApkNiXiang\MyTool\source\in\cn.wangxiao.zhuntiku_4.0_43.apk:要反編譯的APK
-o:指定輸出目錄
E:\ApkNiXiang\MyTool\source\out:反編譯后的文件的輸出根目錄
- 重新編譯打包(回編譯)
.\apktool.bat b -o E:\ApkNiXiang\MyTool\source\rebuild E:\ApkNiXiang\MyTool\source\out
參數(shù)說明:
d:表示執(zhí)行編譯指令,將反編譯后的文件重新打包供炎。
-o:指定輸出目錄
E:\ApkNiXiang\MyTool\source\rebuild:指定打包后的apk的生成目錄
E:\ApkNiXiang\MyTool\source\out:反編譯后的文件的輸出根目錄
執(zhí)行重新編譯打包的過程渴逻,不同的APK,不同的開發(fā)人員可能會(huì)有各種錯(cuò)誤導(dǎo)致不成功音诫,建議首先將apktool文件更新到最新惨奕,然后再看提示。下面說說我遇到的坑(所有的坑都是以破解“準(zhǔn)題庫"app為例的)竭钝。
坑1: 提示 “error: Resource entry chapter_home_page_gravity already has bag item android:textColor.”
這個(gè)錯(cuò)誤提示著十分明顯了梨撞,哪個(gè)文件,哪一行香罐,什么問題卧波。我就找到那個(gè)文件:
發(fā)現(xiàn)果然屬性定義有重復(fù),那么刪除一行重新編譯穴吹。
這種問題幽勒,就屬于開發(fā)人員代碼不規(guī)范的問題了。
坑2: style繼承
找到問題文件:
"Base.V7.Theme.AppCompat.Light"繼承了“style/Platform.AppCompat.Light”對(duì)某個(gè)屬性重新賦值就會(huì)出現(xiàn)這個(gè)問題港令。
我嘗試著把 "Base.V7.Theme.AppCompat.Light"的所有重新賦值的item注釋掉啥容,發(fā)現(xiàn)新的其它的有繼承關(guān)系的布局又出現(xiàn)問題了,根本改不完顷霹,改完了也不知道會(huì)有啥問題咪惠。
坑3: 真正致命的問題
其實(shí)坑1,坑2還只是W級(jí)別的警告淋淀,真正致命的是下面的錯(cuò)誤:
針對(duì)這個(gè)問題及坑2的問題遥昧,網(wǎng)上找到一個(gè)緩兵之計(jì):
https://blog.csdn.net/m0_37750720/article/details/82832915
就是執(zhí)行反編譯(解包)指令的時(shí)候,加一個(gè)-r參數(shù)朵纷,這樣就不會(huì)解資源文件炭臭,回編譯的時(shí)候也就不會(huì)出現(xiàn)問題。但是由于沒有解資源文件袍辞,所以所有的資源文件都是亂碼的鞋仍。
關(guān)于亂碼的問題其實(shí)官方文檔早就作了說明https://ibotpeaches.github.io/Apktool/documentation/,apk直接解壓出來資源文件就是亂碼的(不光光是中文亂碼搅吁,英文也有亂碼威创。)落午,apktool扮演的就是解碼的角色。
坑4: Exception in thread "main" org.jf.util.ExceptionWithContext: Encountered small uint that is out of range at offset 0x38
反編譯一款叫做“伊對(duì)”的相親app肚豺,然后就會(huì)遇到下面問題溃斋。
然后百度了些相關(guān)資料 :
https://blog.csdn.net/changcsw/article/details/51581051
將apktool升級(jí)到最新的2.14.1,還是報(bào)錯(cuò)吸申,換了個(gè)提示:
注意到assets目錄下有一個(gè)A3AEECD8.dex梗劫,應(yīng)該是這個(gè)dex文件格式不對(duì)。我把這個(gè)文件從apk中移除呛谜,然后重新反編譯能通過在跳,重新簽名后也能安裝成功,但是打不開隐岛。我想著這個(gè)應(yīng)該是哪家加密工具給加密了猫妙,反正不是某數(shù)字公司的加固方式。
另外聚凹,反編譯“全民K歌”也是出現(xiàn)這個(gè)錯(cuò)誤割坠。
- 簽名
參照 https://blog.csdn.net/dreamer2020/article/details/52761606即可簽名成功,但是要注意一些問題:
1)win10 keytool 出現(xiàn)亂碼問題解決方法
https://blog.csdn.net/dongheli/article/details/84065118
在命令行運(yùn)行chcp 936 - 運(yùn)行重新打包的APK
APK可以正常安裝妒牙,但是會(huì)報(bào)一個(gè)錯(cuò)誤:
2019-10-22 14:17:06.203 2684-3389/? W/ziparchive: Unable to open '/data/app/cn.wangxiao.zhuntiku-WoI77OMcp7yg9WMUFO_bEQ==/base.apk': No such file or directory
2019-10-22 14:17:06.203 2684-3389/? E/ResourcesManager: failed to add asset path /data/app/cn.wangxiao.zhuntiku-WoI77OMcp7yg9WMUFO_bEQ==/base.apk
2019-10-22 14:17:06.203 2684-3389/? W/PackageManager: Failure retrieving resources for cn.wangxiao.zhuntiku
2019-10-22 14:17:06.210 19612-19612/? D/AndroidRuntime: Shutting down VM
--------- beginning of crash
2019-10-22 14:17:06.210 19612-19612/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: cn.wangxiao.zhuntiku, PID: 19612
java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/data/cn.wangxiao.zhuntiku/.jiagu/libjiagu.so"
at java.lang.Runtime.load0(Runtime.java:928)
at java.lang.System.load(System.java:1633)
at com.stub.StubApp.attachBaseContext(SourceFile:233)
at android.app.Application.attach(Application.java:231)
at android.app.Instrumentation.newApplication(Instrumentation.java:1125)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1080)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6181)
at android.app.ActivityThread.access$1200(ActivityThread.java:232)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7076)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
2019-10-22 14:17:06.213 1707-3764/? W/ActivityManager: Force finishing activity cn.wangxiao.zhuntiku/app.wangxiao.cn.page_module.SplashActivity
上面報(bào)資源文件的錯(cuò)誤彼哼,下面報(bào).so的錯(cuò)誤(好像是用什么加固工具了)。
我自己寫了個(gè)apk湘今,然后簽名敢朱,不用第3方加固工具加固。重復(fù)以上步驟摩瞎。發(fā)現(xiàn)可以正常運(yùn)行拴签,也沒有報(bào)錯(cuò)。(所以不要一上手就揚(yáng)言要破譯哪個(gè)APK旗们,先自己搞個(gè)APK試試蚓哩,畢竟自己有源碼,可以對(duì)比學(xué)習(xí)上渴。)
所以岸梨,不混淆,不使用加固工具加固的APP沒有安全性可言稠氮!
-
修改反編譯出來的源碼
其實(shí)這個(gè)就是我研究逆向編程的初衷:有一個(gè)考試軟件曹阔,一些課程需要收費(fèi),我想著是不是能找到它的漏洞隔披,繞過支付的流程次兆,直接觀看它的課程。
那么锹锰,常見的修改會(huì)有2種情況: - 1)修改資源文件
像前面的使用-r參數(shù)才回編譯成功芥炭,所以想要修改資源文件,必須解決上面所說到的問題恃慧。
但是為了演示园蝠,自己測(cè)試用,用自己的APK痢士,可以先不加-r改改布局然后回編譯彪薛,看看是否生效。
我嘗試著改了一下app_name怠蹂,但是又出現(xiàn)了坑3的問題善延,不改就不會(huì)出現(xiàn)。各種猜想各種試城侧,最后重啟電腦問題才解決易遣,所以緩存絕對(duì)是apktool的一個(gè)巨坑。
- 2)修改smali文件(也就是java源碼)
smali屬于Java虛擬機(jī)的匯編語言嫌佑,所以修改此文件有很大的難度豆茫。
http://www.reibang.com/p/47a5511e17bf 這篇博客指出了一種技巧
class文件生成dex文件的步驟(命令行操作):https://blog.csdn.net/qq_33898263/article/details/79127447
apk反編譯出dex文件
apktool.bat -s d crackme02.apk
二、Jadx
這個(gè)工具主要是用來分析源碼
下載
https://www.softpedia.com/get/Programming/Other-Programming-Files/Jadx.shtml
使用教程
http://www.reibang.com/p/e5b021df2170
三屋摇、逆向?qū)嵺`
http://www.reibang.com/p/683720bdfa58
https://bbs.pediy.com/user-592070.htm (脫殼專家)