❶ 如何把JAR包里的.class文件轉化成.java文件。求反編譯原理,不要工具。謝謝,我沒分......
位元組碼要轉回java源文件是不太可能的
你可以去看一下啊有關位元組碼的書
對於class的文件 你可以用javap這個指令來看一下他的結構的
❷ classloader的原理 有哪些類載入器 為什麼要用自定義類載入器
原理之類的,你自己上網看資料吧,不是一兩句話說得清的。
至於為什麼用自定義類載入器,個人總結了一下可能有下面幾點吧,可能不全,也請大家補充:
加密:眾所周知,java代碼很容易被反編譯,如果你需要把自己的代碼進行加密,可以先將編譯後的代碼用某種加密演算法加密,然後實現自己的類載入器,負責將這段加密後的代碼還原。
從非標準的來源載入代碼:例如你的部分位元組碼是放在資料庫中甚至是網路上的,就可以自己寫個類載入器,從指定的來源載入類。
動態創建:為了性能等等可能的理由,根據實際情況動態創建代碼並執行。
其他(這個理由非常給力吧^_^)
❸ 請問什麼是反編譯,原理是怎麼樣的
反編譯
高級語言源程序經過
編譯
變成可執行文件,反編譯就是逆
過程
。
但是通常不能把可執行文件變成高級語言
源代碼
,只能轉換成
匯編程序
。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人
軟體
的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的
軟體產品
所使用的
思路
、
原理
、
結構
、
演算法
、處理過程、運行方法等設計
要素
,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
❹ qtp的錄制原理是什麼
利用開發語言的反編譯原理,將控制項的方法和屬性預先封裝。如此,在錄制的時候,只要打開相應的插件,QTP就能夠准確識別控制項類型及其對應的屬性等內容(特殊控制項除外)。
❺ 請問什麼是反編譯,原理是怎麼樣的
反編譯
高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。
但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
❻ 反編譯原理是什麼
反編譯的流程,就是虛擬一個執行環境,看程序執行了那些指令,翻譯成相應的語句一般的流程是先把程序調入到數據段,虛擬運行環境,一般這分配文件頭部,從紀錄指令程序數據段,載入到虛擬環境中,紀錄指令,遇到跳轉指令,壓入棧,形成樹結構(看數據結構),遍歷每個節點的指令。形成完整程序。
❼ 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/
❽ 反編譯原理是什麼
反編譯的流程,就是虛擬一個執行環境,看程序執行了那些指令,翻譯成相應的語句
一般的流程是先把程序調入到數據段,虛擬運行環境,一般這分配文件頭部,從紀錄指令程序數據段,載入到虛擬環境中,紀錄指令,遇到跳轉指令,壓入棧,形成樹結構(看數據結構),遍歷每個節點的指令。形成完整程序。
❾ c/c++是如何破解軟體的
如果知道軟體寫的語言最好不過了,對你破解會有很大的促進
然後要破解的話,有些軟體是會加殼保密的,這個時候就必須脫殼,不過這個脫殼還是不復雜,畢竟是因為這個沒有辦法你自己來寫脫殼,現成的工具就好,記得aspackdie好像就可以,要的話可以發給你,
我記得自己手動的嘗試破解一個軟體就用微軟的記事本來練習,但是發現到後來不知道自己應該幹嘛了,因為很多涉及到基礎的編碼,匯編語言的知識,到後面能夠猜出一些東西,真的要到自己去修改它的時候,發現並沒有想像的那麼簡單
說實話用c/c++破解,我的技術水平是遠遠不夠的,真的想要深入的學習的話,可以先從學習匯編語言和編譯原理反編譯原理開始學習,可以買一些專業的書籍學習,只是一時好奇建議沒有必要,水很深...囧rz
/*************************電泡泡*************************/
Ps:如想進一步交流請直接hi我,或者email [email protected] 望採納