導航:首頁 > 源碼編譯 > 自己編譯安卓系統逆向apk

自己編譯安卓系統逆向apk

發布時間:2022-11-25 19:41:04

① 求教安卓apk反編譯,添加廣告教程

工具:
apktool,作用:資源文件獲取,可以提取出圖片文件和布局文件進行使用查看
dex2jar,作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)
jd-gui,作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件

反編譯流程:
一、apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件
下載上述工具中的apktool,解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下,
打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯後資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])

獲取成功之後,發現在文件夾下多了個test文件,點擊便可以查看該應用的所有資源文件了。
如果你想將反編譯完的文件重新打包成apk,那你可以:輸入apktool.bat b test(你編譯出來文件夾)便可
之後在之前的test文件下便可以發現多了2個文件夾:

build
dist(裡面存放著打包出來的APK文件)

二、Apk反編譯得到Java源代碼
下載上述工具中的dex2jar和jd-gui ,解壓
將要反編譯的APK後綴名改為.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內,
在命令行下定位到dex2jar.bat所在目錄,輸入dex2jar.bat classes.dex,
在改目錄下會生成一個classes_dex2jar.jar的文件,然後打開工具jd-gui文件夾里的jd-gui.exe,之後用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了

② 如何使用apktool反編譯apk

1.下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系統)

2.解壓剛剛下載的文件,並將解壓的文件放入C:\Windows目錄下

3.啟動控制台,輸入apktool,回車可查看到apktool工具常用指令

4.新建一個文件夾,用於存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時放入用於測試的android app包(test.apk)

5.控制台輸入:apktool d D:\apk\test.apk D:\apk\test 進行反編譯操作
中句話中「D:\apk\test.apk」指apk存放位置,「D:\apk\test」指反編譯後文件存放的位置

6.反編譯成功之後,進入D:\apk\test文件目錄可以查看到反編譯後的文件

③ apk是什麼文件,Android文件中怎麼反編譯

1 使用 apk_killer 工具,可以查看內部所有的東西,代碼如果沒有很厲害的功底 沒有辦法更改,
但是一些res下的資源都是可以修改的,還有版本號等。
2 修改好的文件 重新編譯一下,可以使用你自己的key,直接可以連接模擬器或真機 運行查看效果。

安卓系統APK反編譯的問題——設置里添加新選項

我想問如何在一個已經編譯的軟體里添加新的事件(不是res)(不是我寫的軟體,沒有源碼)
我想你這個情況,應該換上原來的簽名試試,我反編譯改的都是res,不懂添加新的事件,只改res,就必須用原來的簽名,

⑤ 有沒有反編譯工具,可以把APK完全反成一個android項目的 , 這個android逆向助手只

我可以讓你看見項目的源碼,但是不知道怎麼才能將源碼放到eclipse中進行運行!~~我試了好多次,都不成功,導入工程後總是會出錯,不知道是我哪裡設置的和源碼中設置的不一樣!~~
方法是:第一步:你先把下載的包的後綴名改成.zip
第二步:到網上搜索dex2jar,下載一個,解壓到電腦磁碟中
第三步:打開你改完後綴名的.zip文件,將其中的.dex文件解壓出來,拷貝到dex2jar這個文件中,和lib文件夾放在同文件下
第四步:進入cmd命令,然後用cd 命令進入到dex2jar這個文件中,我的是這樣的cd C:\android反編譯工具\dex2jar-0.0.9.15\dex2jar-0.0.9.15,然後在執行dex2jar classes.dex這個命令,等待一會,反編譯好了後
第五步:到網上搜索jd_gui,然後下載一個解壓到磁碟,打開它然後點打開文件,找到剛剛反編譯好的那個文件夾,即dex2jar那個文件夾中找.jar文件,打開它就能看到源碼了!~~~
其它的資源文件什麼的就在剛剛你改完的那個zip文件中有。

不過你也可以將.apk文件再反編譯回來,在看資源和Androidmanifest.xml文件!~~~這個用到apktool,這個用起來挺簡單的,你可以到網上搜索一下!~~~

⑥ 如何自己編譯android系統並製作刷機包

android系統製作刷機包方法:

【一】:下載安裝最新版ROM助手(市場中有很多類似的製作工具,關鍵要求操作簡單,功能強大),安裝程序非常簡單,只需在一隻蘑菇首頁內直接下載,並解壓到自己的電腦安裝即可。

【二】:如果已經下載了與機型匹配的ROM刷機包,那麼現在可以直接打開ROM助手了,接下來繪制專屬個性的完美刷機包就從這里開始吧。

【三】:打開軟體後,它會自動升級到最新版本,另外打開主界面後,會直觀簡明的顯示出它的所有功能,例如:性能優化,系統精簡,預裝APK,簽名打包等等。提醒大家,不要貪心哦,要根據自己的需求點擊需要操作的功能,如系統精簡,然後進入操作界面,所有功能全部修改一遍也無妨,反正都是一鍵操作,省時省力。

⑦ 自己可以編譯安卓源碼嗎

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    ⑧ 求安卓軟體反編譯修改教程

    1、baksmali:classes.dex反編譯為smali格式

    (smali:smali格式編譯打包為classes.dex,但由於smali格式類似匯編,比較難閱讀,所以用dex2jar進行輔助 )
    2、dex2jar:classes.dex轉為jar包
    3、jdgui:jar反編譯並閱讀

    操作順序:

    apk用zip解開,裡面的classes.dex分別用baksmali處理為smali,用dex2jar處理成jar,然後用jdgui看代碼,找好java文件中要改的位置後,在smali里找對應的位置修改,改完了用smali再編譯為classes.dex,覆蓋原來apk里的同名文件,最後重新簽名。注意安裝時要先刪除原來手機里的版本,因為簽名不同。

    ⑨ 怎麼反編譯APK文件

    一、dexmp方法

    dexmp是emulator自帶提供的查看dex文件的工具,可使用類似這樣的命令將dex文件mp到txt文件中:

    D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexmp.exe -d classes.dex > spk.mp.txt

    得到的文件內容,描述了類的信息,但實在是不好讀啊~~~~

    二、dex2jar + XJad 方法

    該方法是使用dex2jar.jar包,將classes.dex文件解包成jar,在通過XJad(或者其他class反編譯工具)進行java反編譯。如:

    1、dex2jar.bat d:\play\classes.dex

    默認的輸出路徑同classes.dex,生成的文件名為classes.dex.dex2jar.jar

    2、使用XJad反編譯該jar包

    之後的使用方法,大家都懂的:)

    該方法的好處在於,通過XJad反編譯後,大家可直接開到java源文件,缺點在於只能反編譯出開發時的java文件,而開發時使用的lib包不能反編譯出來。

    三、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法

    這個方法就強大了,AXMLPrinter2是還原AndroidManifest.xml和main.xml的工具,直接打開這兩個xml文件是亂碼,而通過還原之後,可以很明白的看到裡面的內容(我猜測還是使用了位元組異或的方式加的密)。

    baksmali.jar是反解析dex的工具,smali.jar則是再還原成dex的工具

    操作方式如下:

    1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml > AndroidManifest.txt

    2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt

    3、java -jar baksmali-1.2.5.jar -o classout/ d:\play\classes.dex

    baksmali可解析(注意,是解析,不是反編譯)原java包以及引用的lib包,解析出的文件認真看還是能看懂,比如以下片段:

    view plain to clipboardprint?
    .class Lcom/paul/test/a;
    .super Landroid/view/View;

    # static fields
    .field private static final a:Landroid/graphics/Typeface;

    # instance fields
    .field private b:I
    .field private c:I
    .field private d:Z
    .field private e:J
    .field private f:I
    .field private l:[Ljava/lang/String;

    # direct methods
    .method static constructor ()V
    .registers 2
    sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;
    const/4 v1, 0x0
    invoke-static {v0, v1}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
    move-result-object v0
    sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
    return-void
    .end method
    #
    # other methods ..........
    #
    # virtual methods
    .method public onKeyUp(ILandroid/view/KeyEvent;)Z
    .registers 4
    const/16 v0, 0x42
    if-eq p1, v0, :cond_8
    const/16 v0, 0x17
    if-ne p1, v0, :cond_b
    :cond_8
    invoke-direct {p0}, Lcom/paul/test/a;->d()V
    :cond_b
    const/4 v0, 0x0
    invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V
    invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
    move-result v0
    return v0
    .end method
    .class Lcom/paul/test/a;
    .super Landroid/view/View;

    # static fields
    .field private static final a:Landroid/graphics/Typeface;

    # instance fields
    .field private b:I
    .field private c:I
    .field private d:Z
    .field private e:J
    .field private f:I
    .field private l:[Ljava/lang/String;

    # direct methods
    .method static constructor ()V
    .registers 2
    sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;
    const/4 v1, 0x0
    invoke-static {v0, v1}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
    move-result-object v0
    sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
    return-void
    .end method
    #
    # other methods ..........
    #
    # virtual methods
    .method public onKeyUp(ILandroid/view/KeyEvent;)Z
    .registers 4
    const/16 v0, 0x42
    if-eq p1, v0, :cond_8
    const/16 v0, 0x17
    if-ne p1, v0, :cond_b
    :cond_8
    invoke-direct {p0}, Lcom/paul/test/a;->d()V
    :cond_b
    const/4 v0, 0x0
    invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V
    invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
    move-result v0
    return v0
    .end method

    認真一看,就知道:

    # static fields 定義靜態變數的標記

    # instance fields 定義實例變數的標記

    # direct methods 定義靜態方法的標記

    # virtual methods 定義非靜態方法的標記

    以onKeyUp方法為例,其中定義了處理邏輯,if-eq p1, v0, :cond_8 表示如果p1和v0相等,則執行cond_8的流程:

    :cond_8
    invoke-direct {p0}, Lcom/paul/test/a;->d()V

    調用com.paul.test.a的d()方法

    不相等: if-ne p1, v0, :cond_b 則執行cond_b的流程:

    :cond_b
    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V

    invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z

    move-result v0

    大概意思就是調用com.paul.test.a的setPressed方法,然後再調用父類View的onKeyUp方法

    最後 return v0

    該方法,能把外部引用的lib包類也解析出來,能開到包的全貌。缺點在於,解析出的smali文件並不是反編譯出的java文件,可讀性降低了,但仔細研究也能看出大概。

    ⑩ 關於安卓逆向你需要知道的工具及網站

    關於安卓逆向你需要知道的工具及網站

    把最近接觸到的安卓逆向相關的工具和網站總結下,供需要者拿去使用,還有不全和遺漏後續會不斷完善。

    工具篇章

    模擬器(動態調試需要用真機)

    安卓原生模擬器:Android Studio自帶的

    夜神:今天開始嘗試這個模擬器,發現在ida掛載進程時出現了問題,掛不上,架構為x86,不能用ida調試。 地址https://www.yeshen.com/

    逍遙:還未使用 地址http://www.xyaz.cn/

    藍疊(bluestack): 地址http://www.bluestacks.cn

    雷電模擬器

    apk反編譯套件工具

    jeb:今天開始嘗試這個工具 地址https://www.pnfsoftware.com/

    YouGais:以前我一直使用這個,沒有官網地址,免費版功能受限

    打包及簽名工具

    apktool:apk拆包打包工具 地址https://ibotpeaches.github.io/Apktool/install/

    jd-gui:java反編譯工具 地址http://jd.benow.ca/

    aotusign:自動簽名工具,沒有官網網路即可

    native文件反編譯工具

    ida:靜態分析、動態分析,免費版功能受限 地址https://www.hex-rays.com/

    gdb:http://ftp.gnu.org/gnu/gdb/

    輔助調試工具

    adb:通向手機或模擬器的橋梁,綠色小程序。最常用的就是查看logcat,進入手機shell等。 地址http://adbshell.com/downloads

    ddms:android SDK中自帶工具。該工具可以查看手機模擬器的進程,選中需要監控的進程後,會出現綠色小蜘蛛圖標,同時後面會出現8700埠號。

    jdb:jdk目錄下自帶的與安卓進程連接的程序,常與ddms配合用於動態調試

    xposed:需要安裝框架+模塊,還有對應的xposed市場。可以在常用市場搜索安裝。bluestack中安裝後變磚了,夜神中安裝正常。

    十六進制文件編輯工具

    UltraEdit:十六進制文件編輯工具

    010Edit:還沒有用過

    winhex:印象中很久前用過

    android開發工具

    Android Studio

    Eclipse

    Aide(手機版開發工具)

    其他

    壓縮軟體:winrar、7zip等等都可以,將apk改名為zip就能直接打開

    社區資料篇章

    論壇及社區

    看雪論壇:https://bbs.pediy.com/forum-161.htm

    freebuff:http://www.freebuf.com/articles/terminal

    還有吾愛破解、知乎、、CSDN等等都有相應版塊內容及文章可供學習。

    arm指令

    官方文檔pdf

    https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR570-DA-70000-r0p0-00rel2/DDI0406C_C_arm_architecture_reference_manual.pdf

    在線編譯網站

    c到匯編在線轉換

    https://gcc.godbolt.org/

    匯編到操作碼在線轉換

    http://armconverter.com/

    閱讀全文

    與自己編譯安卓系統逆向apk相關的資料

    熱點內容
    諾貝爾pdf 瀏覽:967
    雲伺服器快速安裝系統原理 瀏覽:788
    蘋果騰訊管家如何恢復加密相冊 瀏覽:115
    手機軟體反編譯教程 瀏覽:858
    sqlserver編程語言 瀏覽:650
    gpa國際標准演算法 瀏覽:238
    伺服器編程語言排行 瀏覽:947
    怎麼下載快跑app 瀏覽:966
    小紅書app如何保存視頻 瀏覽:170
    如何解開系統加密文件 瀏覽:809
    linux切換root命令 瀏覽:283
    c編譯之後界面一閃而過怎麼辦 瀏覽:880
    怎麼看ic卡是否加密 瀏覽:725
    lgplc編程講座 瀏覽:809
    cnc手動編程銑圓 瀏覽:723
    cad中幾種命令的意思 瀏覽:327
    oraclelinux安裝目錄 瀏覽:136
    安卓系統可以安裝編譯器嗎 瀏覽:572
    javajson實體類 瀏覽:692
    板加密鋼筋是否取代原鋼筋 瀏覽:69