反編譯一定要會嗎
『壹』 android反編譯怎麼修改游戲道具
一般情況下反編譯也是很難修改游戲信息的,主要是因為以下幾點。
1、目前大多數游戲都是由C++開發的,這樣做的好處是可以跨越Android平台和IOS平台通用,而且游戲引擎支持的更好,這種情況是無法反編譯的。
2、如果游戲是根據Android原生開發的話,大多數開發者都是會對代碼進行混淆,也就是所有的代碼都是a,b,c這種簡單的名稱,很難進行閱讀。
3、哪怕反編譯成功,看到正常的源碼,也是需要一定的開發功底,懂得每一段代碼的意思,然後更改後重新打包,如果是聯網游戲可能會對包進行驗證,讓你訪問不了伺服器。
『貳』 WPF應用程序會被反編譯嗎
------解決方案--------------------
WPF程序當然能被反編譯,但是xaml部分會變成bmal,不過內容和原先的xmal出入很大
------解決方案--------------------
沒做混淆的都能反編譯。問題是很難再改了。除非代碼量很少的。
『叄』 如何將.exe的可執行程序反編譯成為C語言代碼程序
沒有完全可以的,想要代碼就自己寫
這種軟體多數是假的,要麼就是有毒的
.exe的可執行程序都是已經編譯過了,很難恢復為代碼
『肆』 我使用CLASS反匯編生成的java文件重新進行編譯生成JAVA文件提示出錯是為什麼呢
並不是所有的class都能反匯編成java文件的,尤其是那些經過obfuscation(代碼混淆)的class文件,混淆器故意生成很難或者根本不可能被反匯編的程序。比如class文件中可以用java關鍵詞作名字的變數,反匯編出來的當然就不行了,這只是混淆技術之一,有些混淆技術相當難破。
另外,反匯編出來的程序質量跟反匯編程序也很有關系,jd-gui不錯,但也不是通吃的。
『伍』 是不是所有的程序都可以反編譯得到原代碼
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
『陸』 用JAVA反編譯器編譯出來的語言一定是原來的正確源代碼嗎
void 是沒有返回值啊。你用return是不對的,這個程序 不會返回任何值得。如果你想有返回值就不要用 void 定義阿。反編譯不一定是原來的源代碼。實現一個項目的代碼段可以有很多種寫法的。
『柒』 如何反編譯華為的SystemUI.apk文件
操作步驟:
第一:要在你的PC上建立Java的環境,才能執行編譯工作。具體設置方法可參考線刷包移植卡刷包教程步驟
第二:下載Apktool工具 apktool.zip
(2.68 MB)。
下載後解壓得到apktool文件夾,把裡面的三個文件放在CDM模式(win+R)默認的目錄下。
例如,我的是Windows7 32位
我的CDM模式默認目錄是C:用戶(Users)Administrator。
第三:如果你是要編譯系統文件的話,請將你要修改的rom里提取framework-res.apk,再用CMD模式「安裝」。(不這樣做會導致解包錯誤)
安裝方法:把framework-res.apk放在剛才放在C:用戶(Users)Administrator文件夾下。
cmd模式執行apktool if
framework-res.apk這個是安裝framework-res.apk
注意:1.第三步很重要,很多人不成功就是因為沒做第三步。
2.編輯回去的systemui.apk及framework-res.apk不能直接放回去(framework-res.apk放回去會導致手機不斷重啟,
『捌』 什麼是Java代碼的編譯與反編譯
Java代碼的編譯與反編譯
2017-02-21Hollis數盟
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(Reverseengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、Java類的編譯與反編譯
我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。
2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。
五、反編譯工具
1、javap
2、Jad:官網(牆裂推薦)
客戶端:
可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。
因為我使用的是linux操作系統,所以我下載的是Linux版本的工具,這個工具下載好之後會有一個執行文件,只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼
Eclipse插件:
下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下『在打開Eclipse,Eclipse->Window->Preferences->Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼