當前位置:首頁 » 編程軟體 » smali編譯

smali編譯

發布時間: 2023-02-28 04:29:46

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

② 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文件了,還自帶高亮顯示哦!

③ 安卓反編譯出來的都是.smali文件,怎麼反編譯位原工程啊修改後還能重新編譯回去

反編譯步驟:

下載apktool 並設置環境變數
命令行進入apk目錄執行:apktool d xx.apk (如果遇到一些錯誤說明apk做了防破解處理)
執行成功後會生成xx文件夾,進入xx文件夾修改需要修改的內容,如果需要修改代碼,進入xx\smali\裡面,需要懂一些smali語法
修改完後回到命令行,執行:apktool b xx ,會在xx文件夾裡面生成一個dist文件夾,裡面的apk就是回編譯的,這個apk是沒有簽名的
下載網上的簽名工具對apk簽名,完了就可以安裝了(如果你下載了源碼或者sdk,裡面自帶一個signapk也可以簽名)

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

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反編譯後,有了smali文件,我用工具導出了java源碼後並修改了源碼,如何編譯打包回apk文件

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


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

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


熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:746
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1009
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:715
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:876
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1124
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:349
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:227
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:911
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:873