反編譯編程教程 請問如何實現(xiàn)反編譯,有軟件嗎?
請問如何實現(xiàn)反編譯,有軟件嗎?高級語言源程序經(jīng)由編譯器都變成可執(zhí)行文件,smali應(yīng)該是逆過程??墒钦G闆r又不能把可執(zhí)行文件變的高級語言源代碼,不能轉(zhuǎn)換成匯編程序。計算機軟件反向工程(Reverse
請問如何實現(xiàn)反編譯,有軟件嗎?
高級語言源程序經(jīng)由編譯器都變成可執(zhí)行文件,smali應(yīng)該是逆過程。
可是正常情況又不能把可執(zhí)行文件變的高級語言源代碼,不能轉(zhuǎn)換成匯編程序。
計算機軟件反向工程(Reversepengineering)也稱作計算機軟件還原工程,是指對他人軟件的目標程序(可執(zhí)行程序)進行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所不使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運行程序方法等設(shè)計要素,以及自己旗下軟件時的參考,或者然后作用于自己的軟件產(chǎn)品中。
加殼是個奇怪的過程,因此越是高級語言,就越甚難java代碼,但目前肯定有許許多多的反編譯軟件:VB:VBExplorer、VB反編譯精靈和VBRezQ沒有辦法反編譯界面圖像,好像代碼不能已經(jīng)反編譯JAVA:JADjava的反編譯也很比較普遍,因為smali也很已經(jīng),將class文件反匯編成java文件確實是有可能的C:eXeScopeDephi:DEDEc#:Reflectorvb程序:E-CodeExplorer.exe
(易格式可執(zhí)行文件總結(jié)器)。
一個單機游戲可以改代碼嗎?
這個可以。
要修改游戲程序代碼,這個就難了,你得懂匯編,編譯原理,編譯器流程,各種PE執(zhí)行文件或其他執(zhí)行文件或代碼的數(shù)據(jù)結(jié)構(gòu),各種靜態(tài)庫在內(nèi)動態(tài)鏈接庫的結(jié)構(gòu),等等。。。一系列編程知識,不過還得必須具備當然的硬件知識,以及操作系統(tǒng)知識。。。
然后再用反匯編工具把游戲的執(zhí)行文件包括庫文件java代碼,將先執(zhí)行文件或代碼smali成匯編代碼,要好一些的反編譯工具能把代碼加殼成C/C代碼,只是因為這些代碼徹底沒有變量命名,所有變量都用A1、B1這樣的。。。
如何防止.NET程序被反編譯?
阻住不了,任何一個程序都也可以被加殼不過了,并不是說反編譯以后就是網(wǎng)頁源代碼還不知道你帶的什么語言,在.net里,一般是用Dotfuscator之類的工具參與混淆干擾.NET有一種加密字節(jié)碼的是是從hook住JIT編譯器的入口來做的:字節(jié)碼經(jīng)加密/混淆不清修真者的存在文件里,等被CLR打開程序了,某個方法要不能執(zhí)行而必須被JIT代碼編譯時,hook住JIT編譯器的入口截住住這個程序編譯請求,后再去把按的字節(jié)碼解密之后再告訴JIT編譯器。
這種做法基本是沒有辦法?;P∨笥?,清楚了原理之后很不錯解,可以快的的某些解密后的字節(jié)碼后再扔給常規(guī)的反編譯器去去處理。
但現(xiàn)實的說,大部分用戶在“借著解密”方面大都小朋友,因此倒也不算一種所需方案。