Ⅰ 反編譯是什麼意思
計算機軟體反向工程(Reverse engineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,
某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
(1)文件反編譯原理擴展閱讀
反編譯是一個復雜的過程,反編譯軟體有:
1、SWF相關的反編譯程序
Action Script Viewer
第一個也是最強大的商業SWF反編譯工具,同類產品中,它的AS代碼反編譯效果最好,SWF轉Fla工程重建成功率最高。
2、Android相關的反編譯程序
SMALI/BAKSMAL
SMALI/BAKSMALI是一個強大的apk文件編輯工具,用於Dalvik虛擬機(Google公司自己設計用於Android平台的虛擬機)來反編譯和回編譯classes.dex。其語法是一種寬松式的Jasmin/dedexer語法,而且它實現了.dex格式所有功能(註解,調試信息,線路信息等)。
3、python相關的反編譯程序
uncompyle2
uncompyle2可以直接轉化為十分完美的python源碼,並可以將反編譯後的源碼再次生成位元組碼文件。
參考資料來源:網路-反向編譯
Ⅱ 反編譯原理是什麼
反編譯的流程,就是虛擬一個執行環境,看程序執行了那些指令,翻譯成相應的語句一般的流程是先把程序調入到數據段,虛擬運行環境,一般這分配文件頭部,從紀錄指令程序數據段,載入到虛擬環境中,紀錄指令,遇到跳轉指令,壓入棧,形成樹結構(看數據結構),遍歷每個節點的指令。形成完整程序。
Ⅲ 反編譯的原理是什麼,最好舉個例子,謝謝
去黑客的論壇上吧,資料很多。反匯編工具可以用ollydbg
Ⅳ frontend反編譯的原理是什麼求大神幫助
以下摘錄於Delphibbs中Dr.yysun 的回答,希望對你有幫助用 java 編程的人, 如果不想公開源程序, 就得與反編譯器作斗爭,必須使用反編譯器,先看看別人將會如何看你的程序,再看看Obfuscators(擾亂器)的效果.JAD 是 Windows 下效果極佳的反編譯器 http://www.geocities.com/SiliconValley/Bridge/8617/jad.html 圍繞這個引擎, 有很多圖形界面, 例如 FrontEnd. (我常用)JODE 是免費的 Java 反編譯器和優化器. http://jode.sourceforge.net/ Intr@byte 是個 JBuilder 的外掛工具 (OpenTool), 使得您在 JB 中能打開 *.class http://www.webappcabaret.com/bjb/index.jsp 它也使用 JAD 引擎, 並限制為只反編譯器類的定義部分.有些網站可以幫您反編譯, 您給個 URL, 它分析出其中有多少個 applet,然後, 再反編譯掉. http://www.jreveal.org/ 最後, 您想了解反編譯原理, 想自己編個反編譯器和擾亂器, 這里有本免費得書 . http://www.riis.com/depile.html 其他到 yahoo 里找吧, 太多了.JJams_King: 擾亂器就是把 bytecode 中的類名,方法名,變數名等變成無意義的符號。例如,以下源程序:package temp;public class HelloWorld { String helloWorld = "Hello World"; String byeWorld = "Bye World"; public static void main(String[] args) { new HelloWorld(true); new HelloWorld(false); } HelloWorld(boolean isHappy) { if (isHappy) { System.out.println(helloWorld); } else { System.out.println(byeWorld); } }}加擾後,再反編譯出來是:package a;import java.io.PrintStream;public class a{ String a; String b; a(boolean flag) { a = "Hello World"; b = "Bye World"; if (flag) System.out.println(a); else System.out.println(b); } public static void main(String astring[]) { new a(true); new a(false); }}而更高級的擾亂器,還能加密字元常量和擾亂程序流。加擾後,再反編譯後變成這樣:package a;import java.io.PrintStream;public class a{ String a; String b; public static boolean c; a(boolean flag) { a = a("q\0041\033/\03162\005,]"); b = a("{\0308W\027V\0231\023"); if (!flag) goto 42 else 26; System.out.println(a); if (!c) goto 52 else 42; System.out.println(b); } public static void main(String astring[]) { new a(1); new a(0); } private static String a(String string) { char ach[]; int i; int j; int k; ach = string.toCharArray(); i = ach.length; j = 0; k = 0; expression 57 expression ach expression j expression 97 expression ach expression j expression 93 expression ach expression j expression 119 expression ach expression j expression 64 expression ach expression j p 2 over 1 push [] ^ pop [] j++; k++; if (i == j) return new String(ach); expression k switchcase 1: goto 21case 2: goto 29case 3: goto 37case 4: goto 45case 5: goto 10default: goto 54 }}你想破譯其中的思路可就難了 :)以上資料摘自: http://www.zelix.com/klassmaster/
Ⅳ 編譯器的工作原理
編譯 是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器語言)的翻譯過程。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的EXE,
所以我們電腦上的文件都是經過編譯後的文件。
Ⅵ 如何防止apk反編譯,是用什麼工具進行防護的
防止apk反編譯,有很多種辦法。首先要了解破解一般分為靜態破解和動態破解。偽加密、混淆、包括上面所說的APK壓縮文件破壞都屬於防止靜態破解。偽加密方法在電腦上有些手機助手無法識別apk文件,手機上可以識別。混淆保護就不說了。這些在防止動態破解上是很難起到作用的。最好是採用系統全面的加密方法,但如果不是專業從事安全領域工作的是很難做到的。況且技術也在不斷的更新,防得了一時而已。一鍵樓主採用專業的加密平台做保護。愛加密可以一試。採用這樣的平台好處就是他們的技術也在不斷地更新。
Ⅶ c語言生成的exe文件還能不能反編譯成源程序
不能!!!!!!
只能人為的翻譯。
沒有這樣的軟體!!!!!!
如果要是能反編譯,這個世界的程序員就全失業了!
Ⅷ 請問什麼是反編譯,原理是怎麼樣的
反編譯
高級語言源程序經過
編譯
變成可執行文件,反編譯就是逆
過程
。
但是通常不能把可執行文件變成高級語言
源代碼
,只能轉換成
匯編程序
。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人
軟體
的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的
軟體產品
所使用的
思路
、
原理
、
結構
、
演算法
、處理過程、運行方法等設計
要素
,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
Ⅸ 如何把JAR包里的.class文件轉化成.java文件。求反編譯原理,不要工具。謝謝,我沒分......
位元組碼要轉回java源文件是不太可能的
你可以去看一下啊有關位元組碼的書
對於class的文件 你可以用javap這個指令來看一下他的結構的
Ⅹ EXE文件反編譯成源碼
EXE文件可以通過步驟來反編譯成源碼,具體步驟如下:
1、在網路上搜索下載反編譯工具ILSpy,ILspy是一個開源的.net反編譯軟體,使用十分方便。解壓後如圖,雙擊.exe文件打開解壓工具。
(10)文件反編譯原理擴展閱讀:
反編譯也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。
exe是編譯好的程序文件 要看結構就得反編譯 但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。 所以要要看結構不止要會反編譯 還得精通匯編語言。