重複造輪子 更方便的Apk反編譯

2021-06-29 00:24:07 字數 2149 閱讀 4715

網上關於apk的反編譯文章已經很多了,在這裡再炒炒冷飯,寫乙個關於反編譯的小功能,算是週末練練手,主要的功能描述起來很是簡單,就是右鍵乙個apk檔案,點一下右鍵選單欄裡面的某個選項,然後就會在當前目錄下生成這個apk反編譯之後的資料夾了。

製作思路很簡單,分兩部走:

編寫install和uninstall批處理,將該項功能新增到右鍵選單欄裡

編寫主要功能的批處理,其實就是呼叫apktool和dex2jar這兩個現成的東西

效果如下圖,隨便下個apk然後執行一下:

這兩個其實也是很簡單的,主要就是用dos命令裡面的reg add,具體引數什麼的,可以通過dos的幫助命令檢視,比如reg add /?可以看到具體有關add的引數介紹,如下圖

所以install的批處理也就是運用reg add來實現的乙個簡單功能,具體就看下面的**:

@echo off

set recode=android_recode.bat

setcommand=%cd%\%recode%

echo %command%

reg add "hkey_classes_root\*\shell\apk decompile" -f

reg add "hkey_classes_root\*\shell\apk decompile\command" /d %command%" "

""%%1

"" -f

pause

看到上面的apk decompile就知道,這就是右擊檔案時,選單欄裡顯示的內容,如果想換成其文字描述的只要替換這個字串即可。

那麼uninstall也就更簡單了,跟install同理,都是呼叫reg的方法,想知道reg下面有那些方法,可以通過reg /?來檢視。接下來貼uninstall的**

@echo off

reg delete hkey_classes_root\*

\shell

\apk" "decompile /f

pause

到此功能的安裝和解除安裝都實現了,其實也就是簡單的新增登錄檔和解除安裝登錄檔。下面是執行反編譯功能的批處理。

@echo off

::下面是獲取資料夾名字

set v=%~nx1

set s=

set t=.

:start

ifnot "%v%"=="" (

set tp=%v:~0,1%

if "%tp%" =="%t%" goto end

set s=%s%

%v:~0,1%

set v=%v:~1%

goto start

):end

set d=%s:~0,-1%

set current=%cd%

::切換到/使用者目錄下,刪除apktool資料夾,是為了以防衝突

cd /d "%userprofile%"

rd apktool /q/s

::切換回當前目錄

cd /d %current%

::echo "%~dp0\tools\apktool\apktool.bat"

::echo

%cd%\%d%

call "%~dp0\tools\apktool\apktool.bat" d --no-src -f %1

%cd%\%d%

call "%~dp0\tools\dex2jar\dex2jar.bat" %cd%\%d%\classes.dex

echo 反編譯完成,請開啟本目錄下的%d%資料夾

pause

二話不說先貼**,還有,各位會發現上面**裡前面一大堆**只是獲取最後生成的資料夾名字,由於本人對dos命令不是很熟悉,這一段寫的應該是會有點囉嗦,如果有更好的方法希望朋友們可以告之。

然後最主要的功能就是下面的兩句,其實就是簡單呼叫apktool和dex2jar提供的功能,然後輸出到當前目錄下。至此,乙個簡單的小功能就完成了。

Apk的反編譯

最近公司的美術讓我給把幾個android的摳下來,我只好從網上找了現成的apk反編譯庫去弄下面說下方法。這個面向全部新老手 3 開啟cmd.exe 使用cd命令定位到具體資料夾中就是上面解壓放在一起的資料夾。4 敲命令apktool d apk 把指定apk拖到cmd框中會自動生成檔案路徑 回車 最...

apk反編譯 檢視已有apk的簽名

1.工具的安裝 檔案儲存到c windows下時需要管理員許可權 2.反編譯apk 在剛才的終端介面,輸入 apktool d test.apk o test 解釋 test.apk為要反編譯的檔案,test為編譯後的資料夾名稱,根據需要修改,如果apk不在當前資料夾下,需要在apk前附上位置,如c...

ubuntu下apk的反編譯

今天除錯乙個程式的時候,因為需要上傳資料到伺服器,但是程式太過久遠了,伺服器上傳的位址就忘記了,但是原始碼又不在我這裡,因為要的急所以就被逼無奈的情況下想到了反編譯,我用的是linux mint 14.1,沒有出現想網上之前出錯的情況,人品還是不錯的!反編譯過程 2.開啟要反編譯的apk將其中的cl...