# dex2jar
## dex2jar軟件包描述
dex2jar包含以下這些組件:
- dex讀取器,用來讀取Dalvik可執行文件(.dex/.odex)。它有與ASM相似的輕量級API。
- dex翻譯器,用來進行轉換。它以dex-ir格式讀入dex指令,經過一些調整,轉換為ASM格式。
- dex-ir,在翻譯器中使用,用來表示dex指令。
- dex工具,用來處理.class文件。例如:修改apk文件,反混淆jar文件等。
- d2j-smali [待發布]反匯編dex文件,將之還原為smali文件;或從smali文件編譯為dex文件。 與smali/baksmali的執行方式不同,兩者語法相同,但是本工具支持在desc類型中的轉義:“Lcom/dex2jar\t\u1234;”
- dex寫入器[待發布]以和dex讀取器相同的方式寫入數據。
原項目地址: https://github.com/pxb1988/dex2jar/
dex2jar主頁 | [Kali上的dex2jar項目](http://git.kali.org/gitweb/?p=packages/dex2jar.git;a=summary)
- 作者: Panxiaobo
- 證書: Apache-2.0
### dex2jar軟件包中包含的工具
##### d2j-jar2dex – 調用dx將jar轉換為dex
```
root@kali:~# d2j-jar2dex -h
d2j-jar2dex -- 調用dx將jar轉換為dex。
用法: d2j-jar2dex [參數] <目錄>
參數:
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-o,--output <out-dex-file> 輸出.dex文件,默認路徑是$current_dir/[jar-name]-jar2dex.dex
版本: 0.0.9.15
```
### d2j-jar-remap–重命名jar文件中的包(package)/類(class)/方法(method)/域(field)
```
root@kali:~# d2j-jar-remap -h
d2j-jar-remap -- 重命名jar文件中的包(package)/類(class)/方法(method)/域(field)
用法: d2j-jar-remap [參數] <jar文件路徑>
參數:
-c,--config <config> 重構用到的的配置文件,此項必須指定
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-o,--output <out-jar> 輸出.jar文件,默認路徑是$current_dir/[jar-name]-remap.jar
版本: 0.0.9.15
在線幫助文檔: https://code.google.com/p/dex2jar/wiki/DeObfuscateJarWithDexTool
```
### d2j-dex2jar–將dex轉換為jar
```
root@kali:~# d2j-dex2jar -h
d2j-dex2jar -- 將dex轉換為jar
用法: d2j-dex2jar [參數] <0號文件> [其他文件]
options:
-d,--debug-info 翻譯調試信息
-e,--exception-file <file> 具體的異常信息文件,默認是$current_dir/[file-name]-error.zip
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-n,--not-handle-exception 不捕獲dex2jar拋出的任何異常
-o,--output <out-jar-file> 輸出.jar文件,默認是$current_dir/[file-name]-dex2jar.jar
-os,--optmize-synchronized 同步調整
-p,--print-ir 將ir輸出到Syste.out
-r,--reuse-reg 生成java的.class文件時循環使用注冊表
-s 與--topological-sort/-ts相同
-ts,--topological-sort 以拓撲邏輯整理塊,能夠生成更多可讀代碼
-v,--verbose 顯示進度
版本: 讀取器-1.15, 翻譯器-0.0.9.15, ir-1.12
```
### dex2jar–此工具已被棄用,若可能請使用d2j-dex2jar
```
root@kali:~# dex2jar
此工具已被棄用,若可能請使用d2j-dex2jar。
dex2jar 版本: 翻譯器-0.0.9.15
dex2jar file1.dexORapk file2.dexORapk ...
```
### d2j-jasmin2jar–將.j文件編譯為.class文件
```
root@kali:~# d2j-jasmin2jar -h
d2j-jasmin2jar -- d2j-jasmin2jar - 將.j文件編譯為.class文件
用法: d2j-jasmin2jar [參數] <路徑>
參數:
-e,--encoding <enc> 指定.j文件編碼方式,默認是UTF-8
-f,--force 強制覆寫
-g,--autogenerate-linenumbers 自動生成行號
-h,--help 顯示此幫助信息
-o,--output <out-jar-file> 輸出.jar文件,默認是$current_dir/[jar-name]-jasmin2jar.jar
版本: 0.0.9.15
```
### d2j-jar-access–增加或移除jar文件中對類(class)/方法(method)/域(field)的訪問
```
root@kali:~# d2j-jar-access -h
d2j-jar-access -- 增加或移除jar文件中對類(class)/方法(method)/域(field)的訪問
用法: d2j-jar-access [參數] <jar文件>
參數:
-ac,--add-class-access <ACC> 增加對class中內容的訪問
-af,--add-field-access <ACC> 增加對field中內容的訪問
-am,--add-method-access <ACC> 增加對method中內容的訪問
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-o,--output <out-dir> 指定.j文件輸出路徑,默認是$current_dir/[jar-name]-access.jar
-rc,--remove-class-access <ACC> 移除對class中內容的訪問
-rd,--remove-debug 移除調試信息
-rf,--remove-field-access <ACC> 移除對field中內容的訪問
-rm,--remove-method-access <ACC> 移除對method中內容的訪問
版本: 0.0.9.15
```
### d2j-asm-verify–校驗jar文件中的.class 文件
```
root@kali:~# d2j-asm-verify -h
d2j-asm-verify -- 校驗jar文件中的.class 文件
用法: d2j-asm-verify [參數] <0號jar文件> [其他jar文件]
參數:
-d,--detail 顯示詳細錯誤信息
-h,--help 顯示此幫助信息
版本: 0.0.9.15
```
### d2j-dex-dump
```
root@kali:~# d2j-dex-dump -h
將.dex或.apk文件中的數據dump至out.dump.jar文件中
```
### d2j-init-deobf–為反混淆jar文件生成初始化配置文件
```
root@kali:~# d2j-init-deobf -h
d2j-init-deobf -- 為反混淆jar文件生成初始化配置文件
用法: d2j-init-deobf [參數] <jar文件>
參數:
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-max,--max-length <MAX> 若長度大于指定的最大值則進行重命名,默認最大值是40
-min,--min-length <MIN> 若長度小于指定的最小值則進行重命名,默認最小值是2
-o,--output <out-file> 輸出.jar文件,默認是$current_dir/[file-name]-deobf-init.txt
版本: 0.0.9.15
```
### d2j-apk-sign–用測試證書對apk文件進行數字簽名
```
root@kali:~# d2j-apk-sign -h
d2j-apk-sign -- 用測試證書對apk文件進行數字簽名。
用法: d2j-apk-sign [參數] <apk文件路徑>
參數:
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-o,--output <out-apk-file> 輸出.apk文件,默認路徑是$current_dir/[apk-name]-signed.apk
-w,--sign-whole 對整個apk文件進行簽名
版本: 0.0.9.15
```
### d2j-jar2jasmin–反匯編jar文件中的.class文件至jasmin文件
```
root@kali:~# d2j-jar2jasmin -h
d2j-jar2jasmin -- 反匯編jar文件中的.class文件至jasmin文件
用法: d2j-jar2jasmin [參數] <jar文件路徑>
參數:
-d,--debug 反匯編調試信息
-e,--encoding <enc> .j文件的編碼方式,默認是UTF-8
-f,--force 強制覆寫
-h,--help 顯示此幫助信息
-o,--output <out-dir> .j文件的輸出路徑,默認是$current_dir/[jar-name]-jar2jasmin/
版本: 0.0.9.15
```
### d2j-dex2jar用法示例
```
root@kali:~# d2j-dex2jar /usr/share/metasploit-framework/data/android/apk/classes.dex
dex2jar /usr/share/metasploit-framework/data/android/apk/classes.dex -> classes-dex2jar.jar
```
- Information Gathering
- acccheck
- ace-voip
- Amap
- Automater
- bing-ip2hosts
- braa
- CaseFile
- CDPSnarf
- cisco-torch
- Cookie Cadger
- copy-router-config
- DMitry
- dnmap
- dnsenum
- dnsmap
- DNSRecon
- dnstracer
- dnswalk
- DotDotPwn
- enum4linux
- enumIAX
- Fierce
- Firewalk
- fragroute
- fragrouter
- Ghost Phisher
- GoLismero
- goofile
- hping3
- InTrace
- iSMTP
- lbd
- Maltego Teeth
- masscan
- Metagoofil
- Miranda
- nbtscan-unixwiz
- Nmap
- ntop
- p0f
- Parsero
- Recon-ng
- SET
- smtp-user-enum
- snmp-check
- sslcaudit
- SSLsplit
- sslstrip
- SSLyze
- THC-IPV6
- theHarvester
- TLSSLed
- twofi
- URLCrazy
- Wireshark
- WOL-E
- Xplico
- Vulnerability Analysis
- BBQSQL
- BED
- cisco-auditing-tool
- cisco-global-exploiter
- cisco-ocs
- cisco-torch
- copy-router-config
- Doona
- Exploitation Tools
- Wireless Attacks
- Ghost-Phisher
- mfoc
- Forensics Tools
- Binwalk
- bulk-extractor
- Web Applications
- apache-users
- BurpSuite
- sqlmap
- w3af
- Sniffing-Spoofing
- Bettercap
- Burp Suite
- DNSChef
- Fiked
- hamster-sidejack
- HexInject
- Password Attacks
- crunch
- hashcat
- John the Ripper
- Johnny
- Hardware Hacking
- android-sdk
- apktool
- Arduino
- dex2jar
- Sakis3G
- Reverse Engineering
- apktool