EXE文件反編譯成源碼
EXE文件可以通過步驟來反編譯成源碼,具體步驟如下:
1、在百度上搜索下載反編譯工具ILSpy,ILspy是一個(gè)開源的.net反編譯軟件,使用十分方便。解壓后如圖,雙擊.exe文件打開解壓工具。
2、選擇file,點(diǎn)擊“打開”,選擇要反編譯的文件,點(diǎn)擊“打開”,就可以看到源碼了!
3、如果想把源碼保存下來,自己在源碼的基礎(chǔ)上修改,點(diǎn)擊"file"下的“Save code...”,保存即可,保存完的文件如圖
4、如需用vs打開反編譯后的源碼,只需要打開這個(gè).csproj文件即可,其中VS為Microsoft Visual Studio是VS的全稱。VS是美國微軟公司的開發(fā)工具包系列產(chǎn)品。
擴(kuò)展資料:
反編譯也稱為計(jì)算機(jī)軟件還原工程,是指通過對他人軟件的目標(biāo)程序(比如可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運(yùn)行方法等設(shè)計(jì)要素,某些特定情況下可能推導(dǎo)出源代碼。
exe是編譯好的程序文件 要看結(jié)構(gòu)就得反編譯 但是通常不能把可執(zhí)行文件變成高級(jí)語言源代碼,只能轉(zhuǎn)換成匯編程序。 所以要要看結(jié)構(gòu)不止要會(huì)反編譯 還得精通匯編語言。
如何使用apktool反編譯apk
1.下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系統(tǒng))
2.解壓剛剛下載的文件,并將解壓的文件放入C:\Windows目錄下
3.啟動(dòng)控制臺(tái),輸入apktool,回車可查看到apktool工具常用指令
4.新建一個(gè)文件夾,用于存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時(shí)放入用于測試的android app包(test.apk)
5.控制臺(tái)輸入:apktool d D:\apk\test.apk D:\apk\test 進(jìn)行反編譯操作
中句話中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反編譯后文件存放的位置
6.反編譯成功之后,進(jìn)入D:\apk\test文件目錄可以查看到反編譯后的文件
求教安卓apk反編譯,添加廣告教程
工具:
apktool,作用:資源文件獲取,可以提取出圖片文件和布局文件進(jìn)行使用查看
dex2jar,作用:將apk反編譯成java源碼(class.dex轉(zhuǎn)化成jar文件)
jd-gui,作用:查看APK中class.dex轉(zhuǎn)化成出的jar文件,即源碼文件
反編譯流程:
一、apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件
下載上述工具中的apktool,解壓得到3個(gè)文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下,
打開命令行界面(運(yùn)行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯后資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])
獲取成功之后,發(fā)現(xiàn)在文件夾下多了個(gè)test文件,點(diǎn)擊便可以查看該應(yīng)用的所有資源文件了。
如果你想將反編譯完的文件重新打包成apk,那你可以:輸入apktool.bat b test(你編譯出來文件夾)便可
之后在之前的test文件下便可以發(fā)現(xiàn)多了2個(gè)文件夾:
build
dist(里面存放著打包出來的APK文件)
二、Apk反編譯得到Java源代碼
下載上述工具中的dex2jar和jd-gui ,解壓
將要反編譯的APK后綴名改為.rar或則 .zip,并解壓,得到其中的額class.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的class.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內(nèi),
在命令行下定位到dex2jar.bat所在目錄,輸入dex2jar.bat class.dex,
在改目錄下會(huì)生成一個(gè)class_dex2jar.jar的文件,然后打開工具jd-gui文件夾里的jd-gui.exe,之后用該工具打開之前生成的class_dex2jar.jar文件,便可以看到源碼了
如何實(shí)現(xiàn)APK的反編譯得到APK的源碼
最新的反編譯不用此方法, 有最新的一鍵自動(dòng)反編譯工具:
這段時(shí)間在學(xué)Android應(yīng)用開發(fā),在想既然是用Java開發(fā)的應(yīng)該很好反編譯從而得到源代碼吧,google了一下,確實(shí)很簡單,以下是我的實(shí)踐過程。
在此鄭重聲明,貼出來的目的不是為了去破解人家的軟件,完全是一種學(xué)習(xí)的態(tài)度,不過好像通過這種方式也可以去漢化一些外國軟件。
注:本Android反編譯教程,在Windows7-Ultimate-64bit操作系統(tǒng)上,測試通過!
下述所需的反編譯工具包 下載
一、反編譯Apk得到Java源代碼
首先要下載兩個(gè)工具:dex2jar和JD-GUI
前者dex2jar是將apk中的class.dex轉(zhuǎn)化成Jar文件,而JD-GUI是一個(gè)反編譯工具,可以直接查看Jar包的源代碼。以下是下載地址:
dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
具體步驟:
首先將apk文件,將后綴改為zip,解壓,得到其中的class.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將class.dex復(fù)制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄(在DOS命令下CD 目錄)
運(yùn)行
dex2jar.bat class.dex
生成
class.dex.dex2jar.jar
生成jar文件的截圖如下:
運(yùn)行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(兩個(gè)包都下載)
具體步驟:
將下載的兩個(gè)包解壓到同一個(gè)文件夾下,應(yīng)該會(huì)有三個(gè)文件:aapt.exe,apktool.bat,apktool.jar
在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool d C:\*.apk C:\*文件夾,如下圖:
命令行解釋:apktool d [apk文件 ] [輸出文件夾]
反編譯的文件如下(AndroidManifest.xml為例):
特別注意:你要反編譯的文件一定要放在C盤的根目錄里(其實(shí)不用放在C盤根目錄也行)
例如:在D盤目錄D:\apktool1.4.1
cd /d D:\apktool1.4.1 //切換到D盤目錄,包含HelloAndroid.apk以及aapt.exe,apktool.bat,apktool.jar三個(gè)文件
apktool.bat d -f HelloAndroid.apk HelloAndroid // apktool反編譯命令,注意 d和
-f 的寫法
將反編譯完的文件重新打包成apk,很簡單,輸入apktool b c:\***文件夾(你編譯出來文件夾)即可,命令如下:這個(gè)主意你文件所在盤
打包apk后的文件在目錄C:\HelloAndroid下,生成了兩個(gè)文件夾:
build
dist
其中,打包生成的HelloAndroid.apk,在上面的dist文件夾下,Ok
最后,再介紹一款剛出來的反編譯工具 Androidfby ,它是一款對上述步驟進(jìn)行了封裝的圖形界面工具,下載地址
但是,針對部分簽名的apk,無法實(shí)現(xiàn)反編譯,但本博客方法則仍然可以反編譯成功!僅供參考使用
另外,作為應(yīng)用開發(fā)者,肯定不希望自己的代碼被反編譯的,下一遍博客將講述如何通過混淆代碼防止被別人反編譯
Android如何防止apk程序被反編譯
作為Android應(yīng)用開發(fā)者,不得不面對一個(gè)尷尬的局面,就是自己辛辛苦苦開發(fā)的應(yīng)用可以被別人很輕易的就反編譯出來。
Google似乎也發(fā)現(xiàn)了這個(gè)問題,從SDK2.3開始我們可以看到在android-sdk-windows\tools\下面多了一個(gè)proguard文件夾
proguard是一個(gè)java代碼混淆的工具,通過proguard,別人即使反編譯你的apk包,也只會(huì)看到一些讓人很難看懂的代碼,從而達(dá)到保護(hù)代碼的作用。
下面具體說一說怎么樣讓SDK2.3下的proguard.cfg文件起作用,先來看看android-sdk-windows\tools\lib\proguard.cfg的內(nèi)容:
[html] view
plaincopyprint?
1. -optimizationpass 5
2. -dontumixedcaclassnames
3. -dontskipnonpubliclibraryclass
4. -dontpreverify
5. -verbo
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. -keepclasswithmembernames class * {
18. native <methods>;
19. }
20.
21. -keepclasswithmembernames class * {
22. public <init>(android.content.Context, android.util.AttributeSet);
23. }
24.
25. -keepclasswithmembernames 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變量名及類名,所有類中部分以設(shè)定了固定參數(shù)格式的構(gòu)造函數(shù),枚舉等等。(詳細(xì)信息請參考<proguard_path>/examples中的例子及注釋。)
讓proguard.cfg起作用的做法很簡單,就是在eclip自動(dòng)生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了
完整的default.properties文件應(yīng)該如下:
[html] view
plaincopyprint?
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 ud by the Ant build system u,
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
大功告成,正常的編譯簽名后就可以防止代碼被反編譯了。反編譯經(jīng)過代碼混淆的apk得到的代碼應(yīng)該類似于下面的效果,是很難看懂的:
如果您使用的是2.3之前的SDK版本也沒關(guān)系,把上面的proguard.cfg文件復(fù)制一份放到項(xiàng)目中,然后進(jìn)行相同的操作即可
如何反編譯華為的SystemUI.apk文件
操作步驟:
第一:要在你的PC上建立Java的環(huán)境,才能執(zhí)行編譯工作。具體設(shè)置方法可參考線刷包移植卡刷包教程步驟
第二:下載Apktool工具 apktool.zip
(2.68 MB)。
下載后解壓得到apktool文件夾,把里面的三個(gè)文件放在CDM模式(win+R)默認(rèn)的目錄下。
例如,我的是Windows7 32位
我的CDM模式默認(rèn)目錄是C:用戶(Urs)Administrator。
第三:如果你是要編譯系統(tǒng)文件的話,請將你要修改的rom里提取framework-res.apk,再用CMD模式“安裝”。(不這樣做會(huì)導(dǎo)致解包錯(cuò)誤)
安裝方法:把framework-res.apk放在剛才放在C:用戶(Urs)Administrator文件夾下。
cmd模式執(zhí)行apktool if
framework-res.apk這個(gè)是安裝framework-res.apk
第四:準(zhǔn)備工作都做好了,現(xiàn)在就可以反編譯和編譯了。
將你要反編譯的apk放在C:用戶(Urs)Administrator目錄下。(你也可以用指定目錄)
cmd模式執(zhí)行apktool d
XXXX.apk這個(gè)就是反編譯比如反編譯SystemUI就執(zhí)行 apktool d SystemUI.apk
就可以了(會(huì)在當(dāng)前的目錄下生成SystemUI的文件夾,修改就是在這個(gè)文件夾里進(jìn)行)
cmd模式執(zhí)行apktool b XXXX 這個(gè)是build
也就是編譯回去比如 編譯SystemUI就執(zhí)行 apktool b
SystemUI就可以了(會(huì)在Systemui的文件夾中生成一個(gè)叫dist的文件夾,編譯回去的apk就是此文件夾中)
注意:1.第三步很重要,很多人不成功就是因?yàn)闆]做第三步。
2.編輯回去的systemui.apk及framework-res.apk不能直接放回去(framework-res.apk放回去會(huì)導(dǎo)致手機(jī)不斷重啟,
怎么反編譯ttings.apk
事項(xiàng):
1.反編譯系統(tǒng)文件必須是從官方提取的.APK文件。(因?yàn)锳PK只能實(shí)現(xiàn)一次反編譯,就是說如果這個(gè)文件已經(jīng)反編譯過了,就不能再次反編譯,就算你反編譯了也不能回編譯。)
2.編譯工具論壇上很多可以自己搜索下載,存放的位置文件夾最好不帶中文。
3.覆蓋原文件時(shí)一定要切記,先移動(dòng)到系統(tǒng)文件夾下,然后修改權(quán)限,然后在覆蓋原來APK(不然會(huì)怎么樣,我相信大家懂的{:soso_e144:} )
4.就算附件中有反編譯工具也要自己搭建好java環(huán)境(因?yàn)橐磺蟹淳幾g的工具都是建立在JAVA環(huán)境的基礎(chǔ)上的)
開始教程:
1.關(guān)于JAVA、環(huán)境變量,請搜索教程帖
2.環(huán)境變量設(shè)置成功后,就是提取你手機(jī)上的Settings.apk。
3.進(jìn)行反編譯,(我想有一定美化基礎(chǔ)的應(yīng)該很會(huì)簡單的),反編譯后得到Settings文件夾打開然后\res\values-zh-rCN\找到strings文件,右鍵打開,打開方式選擇看你習(xí)慣。
修改好以后選擇保存,回編譯。
回編譯好的APK用鼠標(biāo)右鍵單擊 選擇用好壓打開然后將resources.arsc 拖拽出來。然后在把JU1.1的Settings.APK提取出來也用好壓打開,將剛才拖拽的resources.arsc 文件在拖拽到JU得APK中。然后點(diǎn)覆蓋。然后在將其移動(dòng)到SYSTEM\APP里 就OK了(記得修改權(quán)限)
這個(gè)需要在手機(jī)上操作
打開RE管理器,打開里面的system,找到build.prop.長按彈出對話框,選擇:使用文本編輯器打開(右上角要改為讀寫哦)
第四行的:ro.build.display.id= 等號(hào)后面就是你想要輸入的不要過長哦~
第八行的:ro.build.version.relea= 同上
修改完成后,點(diǎn)擊左虛擬鍵,也就是設(shè)置鍵,選擇:保存并退出。
你會(huì)在build.prop下面發(fā)現(xiàn)它的備份文件,刪除,重啟,OK~全部完成~