從0至9的反編譯代碼軟體下載
㈠ VB反編譯還原代碼 求助
如果說 VB3、VB4 還有可能的話,那麼 VB5、VB6 反編譯就是完全的痴人說夢了,VB6 已經不是純粹的解釋性語言了,根本不可能反編譯出完整的源代碼,對於這種語言寫出來的程序,只能獲得中間語言或低級語言。一般來說 VB6 都是 P 代碼,而 P-Code 的代碼逆向回來只能自己看,機器是識別不了的。
舉個例子:
比如在 VB6 中有一句代碼 : MsgBox "Decompile Test."
那麼反編譯出來的結果就是:
(代碼太長不貼,這里貼主要的)
...
mov dword ptr [ebp-58], 004012E4 ; 這里把 "Decompile Test."的地址弄進去了。
...
call dword ptr [<&MSVBVM60.__vbaVarDup>]; 可以清楚的看出來,復制了一份變數的句柄。因為VB里字元串指向的是內存地址。
...
call dword ptr [<&MSVBVM60.#595>] ; 這一句彈出了MsgBox.這里如果跟進去的話是一大堆API 。
...
所以正常反編譯(學匯編語言和計算機編譯原理去吧)的話,看到段了就會知道這是一個 Msgbox 函數,但是具體顯示的內容是什麼,那是根本看不出來的。
P.S. 針對樓上[你不懂就別亂說]說的插一嘴,未加殼的 .NET 為何能被反編譯出源代碼,那是因為 .NET 是託管,而託管有中間語言,所以它的源代碼被編譯成 msil 這種中間語言而非像 VB6 直接編譯成機器語言了。
㈡ 如何實現APK的反編譯得到APK的源碼
最新的反編譯不用此方法, 有最新的一鍵自動反編譯工具:
這段時間在學Android應用開發,在想既然是用java開發的應該很好反編譯從而得到源代碼吧,google了一下,確實很簡單,以下是我的實踐過程。
在此鄭重聲明,貼出來的目的不是為了去破解人家的軟體,完全是一種學習的態度,不過好像通過這種方式也可以去漢化一些外國軟體。
註:本Android反編譯教程,在Windows7-Ultimate-64bit操作系統上,測試通過!
下述所需的反編譯工具包 下載
一、反編譯Apk得到Java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前者dex2jar是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。以下是下載地址:
dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
具體步驟:
首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄(在DOS命令下CD 目錄)
運行
dex2jar.bat classes.dex
生成
classes.dex.dex2jar.jar
生成jar文件的截圖如下:
運行JD-GUI(jd-gui.exe),打開上面生成的jar包,即可看到源代碼了
HelloAndroid源碼(編譯前的apk源碼對照)如下:
二、反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
如果是漢化軟體,這將特別有用。首先還是下載工具,這次用到的是apktool
下載地址:http://code.google.com/p/android-apktool/downloads/list
下載:apktool1.4.1.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(兩個包都下載)
具體步驟:
將下載的兩個包解壓到同一個文件夾下,應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool d C:\*.apk C:\*文件夾,如下圖:
命令行解釋:apktool d [apk文件 ] [輸出文件夾]
反編譯的文件如下(AndroidManifest.xml為例):
特別注意:你要反編譯的文件一定要放在C盤的根目錄里(其實不用放在C盤根目錄也行)
例如:在D盤目錄D:\apktool1.4.1
cd /d D:\apktool1.4.1 //切換到D盤目錄,包含HelloAndroid.apk以及aapt.exe,apktool.bat,apktool.jar三個文件
apktool.bat d -f HelloAndroid.apk HelloAndroid // apktool反編譯命令,注意 d和
-f 的寫法
將反編譯完的文件重新打包成apk,很簡單,輸入apktool b c:\***文件夾(你編譯出來文件夾)即可,命令如下:這個主意你文件所在盤
打包apk後的文件在目錄C:\HelloAndroid下,生成了兩個文件夾:
build
dist
其中,打包生成的HelloAndroid.apk,在上面的dist文件夾下,Ok
最後,再介紹一款剛出來的反編譯工具 Androidfby ,它是一款對上述步驟進行了封裝的圖形界面工具,下載地址
但是,針對部分簽名的apk,無法實現反編譯,但本博客方法則仍然可以反編譯成功!僅供參考使用
另外,作為應用開發者,肯定不希望自己的代碼被反編譯的,下一遍博客將講述如何通過混淆代碼防止被別人反編譯
Android如何防止apk程序被反編譯
作為Android應用開發者,不得不面對一個尷尬的局面,就是自己辛辛苦苦開發的應用可以被別人很輕易的就反編譯出來。
Google似乎也發現了這個問題,從SDK2.3開始我們可以看到在android-sdk-windows\tools\下面多了一個proguard文件夾
proguard是一個java代碼混淆的工具,通過proguard,別人即使反編譯你的apk包,也只會看到一些讓人很難看懂的代碼,從而達到保護代碼的作用。
下面具體說一說怎麼樣讓SDK2.3下的proguard.cfg文件起作用,先來看看android-sdk-windows\tools\lib\proguard.cfg的內容:
[html] view
plainprint?
1. -optimizationpasses 5
2. -dontusemixedcaseclassnames
3. -
4. -dontpreverify
5. -verbose
6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
7.
8. -keep public class * extends android.app.Activity
9. -keep public class * extends android.app.Application
10. -keep public class * extends android.app.Service
11. -keep public class * extends android.content.BroadcastReceiver
12. -keep public class * extends android.content.ContentProvider
13. -keep public class * extends android.app.backup.BackupAgentHelper
14. -keep public class * extends android.preference.Preference
15. -keep public class com.android.vending.licensing.ILicensingService
16.
17. -keepclasseswithmembernames class * {
18. native <methods>;
19. }
20.
21. -keepclasseswithmembernames class * {
22. public <init>(android.content.Context, android.util.AttributeSet);
23. }
24.
25. -keepclasseswithmembernames class * {
26. public <init>(android.content.Context, android.util.AttributeSet, int);
27. }
28.
29. -keepclassmembers enum * {
30. public static **[] values();
31. public static ** valueOf(java.lang.String);
32. }
33.
34. -keep class * implements android.os.Parcelable {
35. public static final android.os.Parcelable$Creator *;
36. }
從腳本中可以看到,混淆中保留了繼承自Activity、Service、
Application、BroadcastReceiver、ContentProvider等基本組件以及
com.android.vending.licensing.ILicensingService,
並保留了所有的Native變數名及類名,所有類中部分以設定了固定參數格式的構造函數,枚舉等等。(詳細信息請參考<proguard_path>/examples中的例子及注釋。)
讓proguard.cfg起作用的做法很簡單,就是在eclipse自動生成的default.properties文件中加上一句「proguard.config=proguard.cfg」就可以了
完整的default.properties文件應該如下:
[html] view
plainprint?
1. # This file is automatically generated by Android Tools.
2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3. #
4. # This file must be checked in Version Control Systems.
5. #
6. # To customize properties used by the Ant build system use,
7. # "build.properties", and override values to adapt the script to your
8. # project structure.
9.
10. # Project target.
11. target=android-9
12. proguard.config=proguard.cfg
大功告成,正常的編譯簽名後就可以防止代碼被反編譯了。反編譯經過代碼混淆的apk得到的代碼應該類似於下面的效果,是很難看懂的:
如果您使用的是2.3之前的SDK版本也沒關系,把上面的proguard.cfg文件復制一份放到項目中,然後進行相同的操作即可
㈢ 如何反編譯Apk得到Java源代碼
1.下載反編譯工具
需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:將apk中的classes.dex轉化成Jar文件。
JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:輔助windows批處理工具。
2.解壓縮APK包
apk文件也是一種常見的zip,常用的壓縮軟體就可輕松地解壓apk文件。用壓縮軟體將apk文件中的文件解壓到一個文件夾中,得到APK中的資源包括XML文件和classes.dex文件,classes.dex就是java文件編譯再通過dx工具打包而成的。
3.反編譯dex文件
解壓apk文件後,你會發現res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理,dex2jar可以將dex文件轉換成普通的jar包。
解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。
將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
4.反編譯jar包
得到jar包後,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便。
打開壓縮文件JD-GUI,運行jd-gui.exe,打開上面生成的jar包,即可看到源代碼了。
5.反編譯xml文件
打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設計界面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。
具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
這樣就得到了可以得到編譯的源碼和XML資源。
注意:文件的路徑中最好不要出現中文!
㈣ 反編譯軟體共有哪些
Dede-<將Delphi編譯的Exe反匯編成Delphi源程序>
http://download.pchome.net/development/developtools/intranslater/detail-9109-0.html
PE Explorer-<功能超強的可視化Delphi、C++、VB程序解析器>
http://download.pchome.net/development/developtools/intranslater/detail-12011-0.html
PE Explorer 漢化版
http://download.pchome.net/development/developtools/intranslater/detail-12012-0.html
Java204-<支持中文,支持動態注釋的超強Java語言反編譯器>
http://download.pchome.net/development/developtools/intranslater/detail-9107-0.html
UnLisp-<AUTOCAD的LISP文件的反編譯程序>
http://download.pchome.net/development/developtools/intranslater/detail-10973-0.html
㈤ 求c# 通過Debug 文件反編譯出其中的代碼,能看見編譯的代碼就可以了,求這樣的軟體工具
http://ilspy.net/
http://sourceforge.net/projects/sharpdevelop/files/ILSpy/2.0/ILSpy_Master_2.1.0.1603_RTW_Binaries.zip/download
轉到這頁面就可以下載ILSpy,如果沒有可以點擊direct link
Reflector收費後,ILSpy更受歡迎。
㈥ 如何將編譯過的.class文件轉變為未編譯的.java文件
可以使用反編譯工具進行反匯編即可,可以獲得.class文件的.java文件.反編譯工具有如下:
DJ Java Decompiler V3.9.9.91
DJ Java Decompiler 是個反編譯的工具,可以將編譯過的CLASS文件編譯還原成為Java原始文件,並且不需要額外安裝JVM(Java Virtual Machine)或是Java SDK的工具模組即可使用。不單如此,DJJava Decompiler也兼具有Java程序編輯工具的角色,提供一些輔助功能便於程序撰寫與修改。
下載地址:http://www.skycn.com/soft/4645.html
小穎JAVA源代碼反編譯超級引摯 V1.4 標准版
最新的Java反編譯工具,支持目錄級的反編譯,也支持雙擊.class文件就可查看源文件,只限用於學習交流使用。
下載地址:http://www.skycn.com/soft/8252.html
Jad-the fast Java Decompiler V0.07
一個 Java 反編譯器,在 IE 中讀取 Java 類文件,並將他們轉換成 Java 原文件,這些原文件可以被重新編譯。
下載地址:http://www.skycn.com/soft/945.html
JDecompiler V1.0 漢化版
現在有許多反編譯Java class文件的軟體,但是大多數都採用內置的查看器來查看反編譯後的源代碼,無法顯示代碼的關鍵字。這個反編譯Java class文件的小工具,能使用自己喜歡的文本編輯器查看反編譯後的代碼,並可以高亮顯示關鍵字內容。
安裝後在資源管理器中直接雙擊.class文件就可以反編譯程序
下載地址:http://www.skycn.com/soft/25489.html
我現在就是使用最後一種工具的,結合UltraEdit-32使用,效果不錯的.JDecompiler V1.0 漢化版安裝以後,第一次使用,直接雙擊要編譯的.class文件,提示選擇文本編輯器,可以選擇UltraEdit-32,以後雙擊要反編譯的.class文件即可查看.java源代碼了,非常方便.
UltraEdit-32
UltraEdit 是一個記事本和大多數編輯程序的替換程序,支持無限制的文件大小,100,000 個詞語的拼寫檢查,完整的十六進制編輯性能,可配置的適合程序設計的語法加亮、列編輯。UltraEdit 還有許多你所需的功能。UltraEdit 可以同時處理多個文件,即使它們是以 MB 為計數的文件。它基於磁碟,甚至對於非常大的文件,也只需要很少的內存數量。UltraEdit-32 是為 Windows 98/Me 和 Windows NT/2000/XP/2003 設計。
下載地址:http://soft.hua3.net/SoftView/SoftView_1312.html
㈦ apktoolapk鍙嶇紪璇戣蔣浠禫141緇胯壊奼夊寲鐗坅pktoolapk鍙嶇紪璇戣蔣浠禫141緇胯壊奼夊寲鐗堝姛鑳界畝浠
澶у跺ソ,鍏充簬apktool(apk鍙嶇紪璇戣蔣浠) V1.4.1 緇胯壊奼夊寲鐗堬紝apktool(apk鍙嶇紪璇戣蔣浠) V1.4.1 緇胯壊奼夊寲鐗堝姛鑳界畝浠嬭繖涓寰堝氫漢榪樹笉鐭ラ亾,鐜板湪璁╂垜浠涓璧鋒潵鐪嬬湅鍚э紒
銆銆apktool 鏄涓嬈炬搷浣滅畝鍗曞姛鑳藉己澶х殑apk鍙嶇紪璇戣蔣浠訛紝瀹冭兘澶熷皢鍙嶇紪璇戠殑APK鏂囦歡淇濆瓨鍒板悓鍚嶇洰褰曚腑錛岃屼笖榪樿兘甯鐢ㄦ埛灝嗗弽緙栬瘧鐨刣ex銆乷dex 閲嶆柊緙栬瘧鎴恉ex鏂囦歡錛岄潪甯稿疄鐢ㄣ
灝忕紪綺鵑夛細APK鍙嶇紪璇戝伐鍏
鍔熻兘璇存槑錛
銆銆1銆佸弽緙栬瘧APK鏂囦歡錛岀敓浜у埌鍚屽悕鐩褰曚腑
銆銆2銆佸皢鍙嶇紪璇戠殑APK閲嶆柊緙栬瘧錛屽湪褰撳墠鐩褰曠敓鎴2涓鏂囦歡錛1涓絳懼悕鐨勫拰涓涓鏈絳懼悕鐨
銆銆3銆佸弽緙栬瘧dex錛宱dex杞瑂mali鏂囦歡
銆銆4.銆佸皢鍙嶇紪璇戠殑dex銆乷dex 閲嶆柊緙栬瘧鎴恉ex鏂囦歡
銆銆5銆佸皢dex杞鎴恓ar
銆愭搷浣滄暀紼嬨
銆銆1銆佸皢闇瑕佸弽緙栬瘧鐨凙PK鏂囦歡鏀懼埌杞浠剁洰褰曚腑
銆銆2銆佹墦寮鍛戒護琛岀晫闈錛岃繍琛-CMD 錛屽畾浣嶅埌apktool鏂囦歡澶癸紝杈撳叆浠ヤ笅鍛戒護
銆銆apktool.bat d -f test.apk test
銆銆錛屽懡浠や腑test.apk鎸囩殑鏄瑕佸弽緙栬瘧鐨凙PK鏂囦歡鍏ㄥ悕錛宼est涓哄弽緙栬瘧鍚庤祫婧愭枃浠跺瓨鏀劇殑鐩褰曞悕縐幫紝鍗充負錛歛pktool.bat d -f [apk鏂囦歡 ] [杈撳嚭鏂囦歡澶筣
銆銆璇存槑鑾峰彇鎴愬姛錛屼箣鍚庡彂鐜板湪鏂囦歡澶逛笅澶氫簡涓猼est鏂囦歡錛岀偣鍑諱究鍙浠ユ煡鐪嬭ュ簲鐢ㄧ殑鎵鏈夎祫婧愭枃浠朵簡銆
銆銆濡傛灉浣犳兂灝嗗弽緙栬瘧瀹岀殑鏂囦歡閲嶆柊鎵撳寘鎴恆pk錛岄偅浣犲彲浠ワ細杈撳叆apktool.bat b test錛屼綘緙栬瘧鍑烘潵鏂囦歡澶逛究鍙錛屾晥鏋滃備笅錛
銆銆涔嬪悗鍦ㄤ箣鍓嶇殑test鏂囦歡涓嬩究鍙浠ュ彂鐜板氫簡2涓鏂囦歡澶瑰垎鍒鏄
銆銆build
銆銆dist(閲岄潰瀛樻斁鐫鎵撳寘鍑烘潵鐨凙PK鏂囦歡)
銆愮寽浣犲枩嬈銆
銆銆apk鍙嶇紪璇戝伐鍏鳳細LB-APK宸ュ叿鏄涓嬈懼畨鍗撹懼囩殑apk鍙嶇紪璇戝伐鍏鳳紝瀹冮泦鎴愪簡adb錛孶SB璋冭瘯鐢ㄧ殑銆 aapt錛孶SB瀹夎呭簲鐢ㄣ佸彇璁懼囧垪琛ㄣ侀噸鍚璁懼囩瓑錛屼笖鐢變簬浣跨敤鐨勬敮鎸佸簱杈冨氾紝鎵浠ヨ繖嬈懼弽緙栬瘧宸ュ叿鐢ㄤ簡闈欐佺紪璇戙傘銆Dodo APKTools(Dodo鍙嶇紪璇戝伐鍏) V1.0 緇胯壊鐗堬細Dodo APKTools鏄涓嬈鵑潪甯稿ソ鐢ㄧ殑鍙嶇紪璇戝伐鍏鳳紝瀹冨彲浠ュ府鍔╂垜浠鎶夾PK鍙嶇紪璇戠敓鎴愮▼搴忕殑婧愪唬鐮佸拰鍥劇墖銆乆ML閰嶇疆銆佽璦璧勬簮絳夋枃浠訛紝鎴戜滑瀵瑰浘鐗囧拰璇璦璧勬簮絳夋枃浠朵慨鏀瑰悗錛岃繕鍙浠ュ啀鎶婂畠浠緙栬瘧鎵撳寘鎴怉PK錛屾槸鍙嶇紪璇慉PK鏂囦歡鐨勫繀澶囪蔣浠躲傘銆apk鍙嶇紪璇戝強緙栬瘧宸ュ叿錛欰PK緙栬瘧涓撳舵槸涓嬈懼姛鑳芥瘮杈冨己澶х殑apk鍙嶇紪璇戝強緙栬瘧宸ュ叿錛屼嬌鐢ㄨ繖嬈捐蔣浠跺彲甯鍔╃敤鎴鋒洿鍔犲規槗瀵笰PK鍖呰繘琛岃繘琛岃В鍖呫佹墦鍖呫佺懼悕銆佹眽鍖栫瓑鎿嶄綔銆傘銆apk鍙嶇紪璇戝伐鍏蜂笅杞斤細APKDB 闆嗗悎浜嗗綋鍓嶅姛鑳介潪甯稿己鎮嶇殑apk鍙奷ex鏂囦歡緙栬瘧宸ュ叿錛岀敤鎴峰湪涓嬭澆瀹夎呬簡涔嬪悗錛屾偍灝卞彲浠ラ氳繃榧犳爣鍙抽敭鐨勫揩鎹瘋彍鍗昦pk鎴杁ex鏂囦歡榪涜屾洿渚挎嵎鐨刟pk絳懼悕鍜屽弽緙栬瘧鎿嶄綔銆