當前位置:首頁 » 編程軟體 » 反編譯原理

反編譯原理

發布時間: 2022-01-10 12:23:40

Ⅰ 反編譯一個易語言程序可以做到嗎

反編譯的原理應該是一個語言的語法關鍵字和程序的匯編結構有相同部分,然後就類似查找替換這樣噠。不過需要一個翻譯引擎and蠻多的工程,可以倒是可以所以說
然後以前的易語言程序倒是可以,現在的話易語言換了編譯方式所以emmmm,略難

Ⅱ 請問什麼是反編譯,原理是怎麼樣的

反編譯
高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。

但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。

計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。

Ⅲ c/c++是如何破解軟體的

如果知道軟體寫的語言最好不過了,對你破解會有很大的促進

然後要破解的話,有些軟體是會加殼保密的,這個時候就必須脫殼,不過這個脫殼還是不復雜,畢竟是因為這個沒有辦法你自己來寫脫殼,現成的工具就好,記得aspackdie好像就可以,要的話可以發給你,

我記得自己手動的嘗試破解一個軟體就用微軟的記事本來練習,但是發現到後來不知道自己應該幹嘛了,因為很多涉及到基礎的編碼,匯編語言的知識,到後面能夠猜出一些東西,真的要到自己去修改它的時候,發現並沒有想像的那麼簡單

說實話用c/c++破解,我的技術水平是遠遠不夠的,真的想要深入的學習的話,可以先從學習匯編語言和編譯原理反編譯原理開始學習,可以買一些專業的書籍學習,只是一時好奇建議沒有必要,水很深...囧rz

/*************************電泡泡*************************/
Ps:如想進一步交流請直接hi我,或者email [email protected] 望採納

Ⅳ 如何讓C++寫的dll不被反編譯

簡單回答:
1、理論上不能保證程序不被反編譯。
2、一些加殼軟體可以做到加大被反編譯的難度,迫使操作者先解殼才能做反編譯,但同時會降低程序的運行效率。
3、當前的技術條件下,一般而言,反編譯出的「源代碼」一般而言並不能作學習,參考的源代碼,多數情況下只能用於分析區部片斷分析,主要用於破解或小范圍類修改。
4、一些簡單的加殼軟體:ASPACK、UPX、PECompact等,如果想嘗試,自個去搜索下載後試試。加殼後的軟體還有可能被某些殺軟當成惡意軟體。
5、這也正是很多對安全要求高的系統使用「三層架構」(類似訪問網頁/網站)的原因。因為在三層架構中,核心軟體、數據不被用戶直接接觸。

************以下是相關知識,有耐心可看看************
一、關於反編譯與破解。
1、以當前的技術來說,理論上,所有的程序都存在被反編譯的可能。
2、但是反編譯出來的代碼並不一定能被技術不高的人看懂,因為反編譯出來的「源代碼」與編寫者寫出的原代碼在80%以上是不同的。這是因為反編譯的原理是根據機器碼(或中間碼),讓機算機進行反向生成高級語言,而不是找出編寫者原有的代碼,找出原有的代碼是不可能的。反編譯出來的代碼在可理解性、可閱讀性上,一般而言是非常差的。
3、但是,這並不代碼反編譯出來的「源代碼」沒有價值,對於內行來說,分析反編譯出來的代碼中的某些特定片段,就可以對程序進行破解,找出程序的關鍵點、口令、數據來源等等。因為破壞總是比建設要容易,分析局部比規劃全局要容易得多。
4、如果考慮到被反編譯將關鍵代碼進行特殊處理的話,可能加大相關的難度,比如將特定的字元串分成多個字串在程序中存儲,或是進行加密後存儲,在使用時合成/生成,不用時即時在內存中清除等等……。
5、反編譯後對關鍵部分的定位往往是根據字元串來進行的,比如在用戶沒有注冊時,跳出一行對話,告訴用戶「請注冊後再使用」,破解者就會在反編譯後追查這個字串所在,然後查到這個字串對應的變數與地址,再追查調用這個變數或地址的代碼,然後再延伸查到什麼情況下調用「調用這個變數或地址的代碼」,最後,設定跳過語句。這就是最典型的破解注冊的方法。破解完再將修改了的「源代碼」進行編譯,或是根據「源代碼」直接修正程序中對應的代碼,OK,破解版正式完成。
二、關於加殼。
1、理論上,同樣,沒有破解不了的殼。
2、但是有些加殼軟體使用了一些特別的方法,使得破解殼的難度變得非常難,技術不夠的朋友很難下手,比如將原程序代碼拆分、變型、植入自校驗等等技術。
3、但加殼軟體同樣是程序,它自身就存在被反編的可能,加了殼可以類比成,在一個木箱外面再加個保險櫃。但千萬別以為保險櫃就一定是保險的,面對各種技術開鎖、暴力開箱,再強的保險櫃也只能是加大難度而已。
4、越復雜的加殼,就會使得程序運行時效率降得越低,這是必然的,因為原本只關注目標任務的程序現在還要時時提防著被提取、被監測。

Ⅳ 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/

Ⅵ 請問什麼是反編譯,原理是怎麼樣的

反編譯
高級語言源程序經過
編譯
變成可執行文件,反編譯就是逆
過程

但是通常不能把可執行文件變成高級語言
源代碼
,只能轉換成
匯編程序

計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人
軟體
的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的
軟體產品
所使用的
思路

原理

結構

演算法
、處理過程、運行方法等設計
要素
,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。

Ⅶ 反編譯原理和書籍

什麼反編譯原理?
有《編譯原理》這本書和《程序設計語言編譯原理》
如果是學逆向思維和軟體破解就看《看雪論壇精華1~9》

Ⅷ 反編譯原理是什麼

反編譯的流程,就是虛擬一個執行環境,看程序執行了那些指令,翻譯成相應的語句
一般的流程是先把程序調入到數據段,虛擬運行環境,一般這分配文件頭部,從紀錄指令程序數據段,載入到虛擬環境中,紀錄指令,遇到跳轉指令,壓入棧,形成樹結構(看數據結構),遍歷每個節點的指令。形成完整程序。

Ⅸ 誰有辦法把class文件反編譯為java嗎,不能出任何錯誤。我用jd總是有錯誤,而且好像有層級限制

jd只是適合少量class文件,如果太多的話,類的引用就太繁瑣了,偶爾會出錯。我也是用XJAD反編譯的,它可以反編譯一個jar包。反編譯有啥原理呢?虛擬機將*.java文件編譯成位元組碼(*.class文件)然後,在編譯成本地機器碼,執行;我們一般用來傳播的也就是*.class文件,這是一種有標准格式的位元組碼,開發工具按這個格式在將轉換為*.java程序,就這樣咯。而且,如果你要學了*.class文件的結構,自己都能計算出對應的*.java文件,只不過很復雜,很繁瑣。

Ⅹ 如何把JAR包里的.class文件轉化成.java文件。求反編譯原理,不要工具。謝謝,我沒分......

位元組碼要轉回java源文件是不太可能的
你可以去看一下啊有關位元組碼的書
對於class的文件 你可以用javap這個指令來看一下他的結構的

熱點內容
intel快速存儲ssd 發布:2024-11-15 20:00:27 瀏覽:142
吃雞配置太低怎麼調高畫質 發布:2024-11-15 19:58:19 瀏覽:734
王者怎麼設置來電屏蔽安卓 發布:2024-11-15 19:56:08 瀏覽:449
伺服器如何搭建多個ip 發布:2024-11-15 19:42:10 瀏覽:102
價錢低高配置的有哪些車 發布:2024-11-15 19:34:53 瀏覽:380
androidgps定位開發 發布:2024-11-15 19:34:52 瀏覽:334
如何掃碼添加伺服器地址 發布:2024-11-15 19:31:48 瀏覽:278
sql語句復制資料庫 發布:2024-11-15 19:28:02 瀏覽:837
演算法的薪資 發布:2024-11-15 19:15:22 瀏覽:322
ubuntu可以重新編譯嗎 發布:2024-11-15 19:09:10 瀏覽:649