Android逆向編程

一软能、加固

APP應(yīng)用加固 | 幾維安全

聯(lián)系我們--安天 智者安天下

你不知道的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/

image.png

文檔說的很清楚谦炬,其實(shí)中國APKtool的博客鼻祖悦屏,就是照著這個(gè)翻譯的节沦。

使用

apktool.bat,注意win10在命令行運(yùn)行時(shí)要加上.\础爬,否則會(huì)報(bào)錯(cuò)如下:


image.png

其實(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.”

image.png

這個(gè)錯(cuò)誤提示著十分明顯了梨撞,哪個(gè)文件,哪一行香罐,什么問題卧波。我就找到那個(gè)文件:
image.png

發(fā)現(xiàn)果然屬性定義有重復(fù),那么刪除一行重新編譯穴吹。
這種問題幽勒,就屬于開發(fā)人員代碼不規(guī)范的問題了。
坑2: style繼承
image.png

找到問題文件:
image.png

"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ò)誤:
image.png

針對(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ì)遇到下面問題溃斋。
image.png

然后百度了些相關(guān)資料 :
https://blog.csdn.net/changcsw/article/details/51581051
將apktool升級(jí)到最新的2.14.1,還是報(bào)錯(cuò)吸申,換了個(gè)提示:
image.png

注意到assets目錄下有一個(gè)A3AEECD8.dex梗劫,應(yīng)該是這個(gè)dex文件格式不對(duì)。我把這個(gè)文件從apk中移除呛谜,然后重新反編譯能通過在跳,重新簽名后也能安裝成功,但是打不開隐岛。我想著這個(gè)應(yīng)該是哪家加密工具給加密了猫妙,反正不是某數(shù)字公司的加固方式。

另外聚凹,反編譯“全民K歌”也是出現(xiàn)這個(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è)巨坑

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 (脫殼專家)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揩魂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炮温,更是在濱河造成了極大的恐慌火脉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒啤,死亡現(xiàn)場(chǎng)離奇詭異倦挂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)白修,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門妒峦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兵睛,你說我怎么就攤上這事肯骇。” “怎么了祖很?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵笛丙,是天一觀的道長。 經(jīng)常有香客問我假颇,道長胚鸯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任笨鸡,我火速辦了婚禮姜钳,結(jié)果婚禮上坦冠,老公的妹妹穿的比我還像新娘。我一直安慰自己哥桥,他們只是感情好辙浑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拟糕,像睡著了一般判呕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上送滞,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天侠草,我揣著相機(jī)與錄音,去河邊找鬼犁嗅。 笑死边涕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的愧哟。 我是一名探鬼主播奥吩,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蕊梧!你這毒婦竟也來了霞赫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤肥矢,失蹤者是張志新(化名)和其女友劉穎端衰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甘改,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旅东,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了十艾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抵代。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忘嫉,靈堂內(nèi)的尸體忽然破棺而出荤牍,到底是詐尸還是另有隱情,我是刑警寧澤庆冕,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布康吵,位于F島的核電站,受9級(jí)特大地震影響访递,放射性物質(zhì)發(fā)生泄漏晦嵌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惭载。 院中可真熱鬧旱函,春花似錦、人聲如沸棕兼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伴挚。三九已至,卻和暖如春灾炭,著一層夾襖步出監(jiān)牢的瞬間茎芋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工蜈出, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留田弥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓铡原,卻偏偏與公主長得像偷厦,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子燕刻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容