導航:首頁 > 編程語言 > java轉smali

java轉smali

發布時間:2022-07-05 14:02:23

A. 單個文件java能轉成單個smali文件嗎放回原來的smali文件夾下能繼續封裝執行嗎

除非原來的類是單文件,否則基本不能。。。。。。。。

B. 如何運行Smali文件

smali 是android 應用程序(*.apk)反編譯生成的文件格式, 是一種類似於匯編語言的底層計算機語言。閱讀和書寫smali語法都需要極大的耐心和勇氣, 本文將介紹如何反編譯和運行第三方的程序(smali)代碼。
什麼是smali 文件
Android程序文件, 即apk文件, 其實是一個zip壓縮包, 其文件結構如下:

其中, classes.dex是程序的核心文件,是java語言的代碼編譯後的二進制位元組碼程序。這種位元組碼程序是編譯專供機器閱讀的, 類似於匯編語言的機器碼。然而如果想直接閱讀這部分程序, 最好的方法就是將該文件轉化為smali文件。
apktool
著名的反編譯工具 apktool 就可以完成這部分工作。 它將classes.dex文件反編譯成一堆的smali文件, 這些文件按源碼的包結構保存在各自的文件夾中。如下所示:

另外, apktool 工具強大之處在於它不僅可以反編譯apk文件, 而且可以根據現有的smali 文件生成新的apk文件。 這就給漢化apk或者去除apk內嵌廣告提供了可能。
smali語法類似於匯編語言的語法, 涉及寄存器的直接操作, 可以直接閱讀, 但羞澀難懂, 尤其是在代碼混淆之後。

dex2jar
有人做了一個專門的工具 dex2jar 將classes.dex 轉化為jar 文件, 通過 jd-gui 閱讀。

但dex2jar 並不健全, 反編譯出的java文件大部分都有編譯錯誤。可以簡單的閱讀和分析, 但若是涉及到很細致的內容, 則還是需要依賴smali。 smali 文件的編輯器推薦使用 sublime + sublime-smali , 具體請參考文章 為Sublime Text安裝smali代碼語法高亮插件 。

C. 怎麼實現把smali文件class文件java文件之間轉化

你總裝了JDK吧,沒有可以去java.sun.com下 還要配置JDK---右擊「我的電腦」---尋屬性」---「高級」--「環境變數」 --選擇下面的框「系統變數中的path」雙擊---現在開始設置變數值,在 「%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem」 ...

D. 有的安卓程序反編譯後是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)

E. apk反編譯後,有了smali文件,我用工具導出了java源碼後並修改了源碼,如何編譯打包回apk文件

https://github.com/ollide/intellij-java2smali


IntelliJ IDEA 或者android studio的一個插件。

可以把java轉smali,前提是沒有語法錯誤。


F. 怎樣把smali文件轉換為java文件

可以先把smali轉化為dex文件,然後再用 dex2jar轉化一次。我之前也遇到過跟你一樣的情況就是這么處理的。祝你好運!

G. 怎麼將Java邏輯代碼翻譯成tsql語句

把java代碼轉成smali代碼共需要以下三個步驟 1、編譯java代碼為class文件 javac smaliTest.java 這個比較簡單,會生成smaliTest.class文件 2、把class文件轉成dex文件 我們知道apk包里java代碼最後生成的是class.dex文件,把class轉化成dex文件

H. 如何將 smali 文件i轉換成java文件

可以先把smali轉化為dex文件,然後再用
dex2jar轉化一次。我之前也遇到過跟你一樣的情況就是這么處理的。祝你好運!
-----------------------------------------------------------------------------------------------------
安卓精英團為你解答
安卓精英團歡迎各位精英加入

閱讀全文

與java轉smali相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:946
安卓導航無聲音怎麼維修 瀏覽:333
app怎麼裝視頻 瀏覽:431
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491