㈠ 反編譯後,怎麼就一個smail文件
因為反編譯失敗了,所以只有smali文件夾了。
1.反編譯Apk得到java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前則梁者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。
具體步驟:指盯遲
首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄
運行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
還是下載工具,這次用到的是apktool
具體步驟:
將下載的兩個包解壓到同一個文件夾下,唯李應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
1.解壓縮下載的兩個文件包,apktool-install-windows-r04-brut1.tar解壓縮後得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解壓後的一個.jar 文件到解壓後的\apktool-install-windows-r04-brut1文件夾里)
2.特別注意:你要反編譯的文件一定要放在C盤的根目錄里
㈡ 安卓反編譯出來的都是.smali文件,怎麼反編譯位原工程啊修改後還能重新編譯回去
安卓反編譯後,都是通過修改smali文件來實現反編譯的,因為編譯緣故,導致反回編譯出來的java文件答一定不會完整,反向工程也是通過修改smali文件來實現的反編譯。如果要做到傻瓜式反編譯,網路搜索一個安卓修改大師安裝就可以了,圖形界面,完全傻瓜式操作。
㈢ android反編譯APK後,是smali文件,能反編譯成dex文件嗎
dex文件不需要
反編譯
的,apk就是個壓縮文件,dex可以通過解壓直接得到
㈣ apk反編譯後smali文件怎麼查看
1,首先得下載SublimeText
2,安裝好後,需要去給它安裝一個插件包
3,點擊Install Now 按鈕後進入,然後復製版對應的版本下的代碼權
4,打開SublimeText 按下快捷鍵 ctrl+~,或者打開菜單欄View點擊Hide Console 顯示控制台,並將第3步中復制的代碼粘貼到控制欄並按Enter鍵確認,然後重新開啟SublimeText
5,打開SublimeText,我們可以看到在Preferences下多了一個菜單Package Control,好了那麼就點擊這個菜單(Package Control)就會彈出界面
6,在彈出框中點擊Package Control:Install Package這一行,就會彈出提示,然後直接輸入smali
7,搜到後就直接點擊Smali這一行,它就已經裝了,然後分分鍾後就好了,你可以隨意打開一個反編譯的apk文件中的smali文件了,還自帶高亮顯示哦!
㈤ 為什麼我用apktool反編譯systemui.apk後裡面沒有smali文件夾
說明返編如枯譯失敗了。
1.反編譯Apk得到Java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。
具體步驟:
首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄
運行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
還是下載工具,緩橡慧這次用到的是apktool
具體步驟:
將下載的兩個包解壓到同一個文件夾下,應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
1.解壓縮下載的兩個文件包,apktool-install-windows-r04-brut1.tar解壓縮後得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解壓後的一個.jar 文件到解壓後的\apktool-install-windows-r04-brut1文件夾里)
2.特別注意:你要反編譯的文件一定要放在擾答C盤的根目錄里
㈥ APK反編譯後沒有res文件夾,只有一個smali文件夾正常嗎
不正常,這情況一般是資源混淆了,資源混淆的apk反編譯時提示錯誤,生成一個res文件夾和一個AndroidManifest.xml
㈦ APK反編譯後的smali文件如何修改其中的一個數值
反編譯apk步驟,把文件名的 .apk修改為 .rar,解壓就看到res,lib等文件,其中classes.dex是需要你反編譯的java代碼回。
把apk文件修改成答.rar文件解壓獲得classes.dex和資源文件。
dex2jar-0.0.7.9-SNAPSHOT 拖動生成的classes.dex文件到dex2jar.bat突變生成classes.dex.dex2jar.jar文件,解壓.jar文件獲得.class文件,用XJad進行反編譯java文件。
㈧ 電腦端反編譯apk 反編譯出現下面 輸出文件只有smali文件,怎麼解決
修改smali文件,再反編譯回去
㈨ android反編譯怎麼修改游戲道具
需要的工具
jdk:必須的
baksmali:classes.dex反編譯為smali格式(文本文件,可修改)
smali:smali格式編譯打包為classes.dex
但由於smali格式類似匯編,比較難閱讀,所以用dex2jar進行輔助
dex2jar:classes.dex轉為jar包
jdgui:jar反編譯並閱讀
以上工具可以在 http://liye111111.ys168.com/ 下載
好了,順序就是把apk用zip解開,裡面的classes.dex分別用baksmali處理為smali,用dex2jar處理成jar,然後用jdgui看代碼,找好java文件中要改的位置後,在smali里找對應的位置修改,改完了用smali再編譯為classes.dex,覆蓋原來apk里的同名文件,最後重新簽名。注意安裝時要先刪除原來手機里的版本,因為簽名不同了,我第一次再這里卡了好久。
以「捕魚達人海底撈」為例
下載這個游戲的apk,fishing_joy_1.apk,和工具放在一起
用zip解開fishing_joy_1.apk
classes.dex到baksmali的同一目錄
用baksmali處理為smali
java -jar baksmali-1.2.6.jar -x classes.dex
得到out目錄,裡面是smali文件
用dex2jar處理classes.dex為jar包
dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex
得到classes.dex.dex2jar.jar
這時我們的工作目錄下面是這樣
用jdgui打開classes.dex.dex2jar.jar
好了,可以看代碼,但還不能直接修改,需要對比著來修改smali文件
比如我們通過對比找到控制魚被打到幾率的代碼在FishLayer.smali
Java代碼
㈩ 有的安卓程序反編譯後是samli文件,這是程序員直接用smali語言寫的,還是是用java寫的
您好,
1、原始類型:
v void 只能用於返回值類型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)
對象類型:
Lpackage/name/ObjectName相當於java中的package.name.ObjectName解釋如下:
L:表示這是一個對象類型
package/name:該對象所在的包
;:表示對象名稱的結束
數組的表示形式:
[I :表示一個整形的一維數組,相當於java的int[];
對於多維數組,只要增加[ 就行了,[[I = int[][];註:每一維最多255個;
對象數組的表示形式:
[Ljava/lang/String 表示一個String的對象數組;
方法的表示形式:
Lpackage/name/ObjectName;——>methodName(III)Z 詳解如下:
Lpackage/name/ObjectName 表示類型
methodName 表示方法名
欄位的表示形式:
Lpackage/name/ObjectName;——>FieldName:Ljava/lang/String;
即表示: 包名,欄位名和各欄位類型
方法的傳參:
當一個方法被調用的時候,方法的參數被置於最後N個寄存器中;
例如,一個方法有2個參數,5個寄存器(v0~v4)
那麼,參數將置於最後2個寄存器(v3和v4)
非靜態方法中的第一個參數總是調用該方法的對象;
說明:對於靜態方法除了沒有隱含的this參數外,其他都一樣
寄存器的命名方式:
V命名
P命名 第一個寄存器就是方法中的第一個碰明參數寄存器
比較:使用P命名是為了防止以後如果在方法中增加寄存器,需要對參數寄存器重新進行編號的缺點:
特別說明一下:Long和Double類型碰猜是64位的,需要2個寄存器
例如:對於非靜態方法
LMyObject——>myMethod(IJZ)V;
有4個參數:LMyObject,int,long,bool; 需要5個寄存器來笑吵型存儲參數;
P0 this
P1 I (int)
P2,P3 J (long)
P4 Z(bool)