標題:

Java 反組譯 與反制之道

發問英文自我介紹範例:勸和論全文翻譯

Java是個非常棒的語言 最棒的地方是:真正的誇平台語言、還有它是免費的 但是Java的另一個特色是 反組譯較其他語言容易(個人的感覺啦) 在此有兩個問題 1 請問有哪些比較好的反組譯程式(包括付費與不付費) 2 要怎樣反制反組譯呢?(有軟體可以做呢 還是要再撰寫階段作plan) 給分不吝嗇 (20點) 但請描述詳細些 ^_* 更新: 嗯 原來此反制方式叫做 obfuscations 呀 上網看了一下 有些 before & after 的 sample 這種方式根本對高手沒用 對於邏輯能力超強者更是沒多大差別 不過我大概知道coding 時怎樣寫才可以增加反組譯的困難了 順帶一題 覺得Java容易反組譯是因為 Java編譯後 成為 byte code 而非類似其他語言的可執行檔 因為沒有其他語言的反組譯經驗 而Java反組譯後與原先程式非常類似

最佳解答:

還原成為原始程式並不是反組譯(deassemble)而是反編譯(decompile), 反組譯是指編成assembly,而JAD(http://kpdus.tripod.com/jad.html)是反編譯器,目前最強的就是JAD。其他的反編譯器大都是做成JAD的前端(front end),JODE(http://jode.sourceforge.net/)是用nativeJava寫的decompiler,也是OpenSource的喲~ 混淆器(obfuscator)是把Class、Method和變數名稱做變化,但細心的人仍然是有辦法解讀的。 在Java上obfuscator有許多免費的,像RetroGuard(http://www.retrologic.com/)個人使用免費,另外有yGuard(http://www.yworks.com/en/products_yguard_about.htm) 及OpenSource的ProGuard(http://proguard.sourceforge.net/) 每個人的喜好不同,選個自己喜歡的用吧~ 我自己是支持OpenSource,所以用ProGuard。 另外若真正希望不被別人看出來,得用Native的Dll或Exe。 當然得會寫C/C++,才是根本解決之道。 另一種方式是把Java編譯成native, GCJ(http://gcc.gnu.org/java/)解決了一半的問題,但沒有awt或swing。 Mohan Embar找出解決方法(http://www.thisiscool.com/gcc_mingw.htm) 但並沒有100%可用,Garbage Collection這些東西實作並沒有JRE來得好。 另外這個商業軟體也可以JET(http://www.excelsior-usa.com/home.html)

其他解答:

我覺得再怎麼干擾都還是會被反組譯 包成exe這是個比較可以徹底解決的方法|||||你可以用 Java Decompiler (FREE!) 可以做反組譯喔 http://members.fortunecity.com/neshkov/dj.html 用法很簡單,安裝完,每在 .class 檔案按滑鼠右鍵就能選使用 Java Decompiler 做反組譯|||||jad就可以囉,蠻多人在用的 to Java 殺手級程式:這問題不會很難呀,蠻常見的|||||不光是 Java, C#, C++ 等等也都可以反組譯, 也因為這樣, 這些語言都可以進行一種機器碼模糊化 模糊化以後反組譯就會變得困難一些了 我的工作用不到模糊化工具 (因為我比較喜歡寫 Open Source 的東西) 不過你上Yahoo查 Java Obfuscation (要查全球喔) 應該會有你要的資料, 這類資料應該英文的居多 所以你要加油囉! 不過你很厲害呢! 問得出這種問題, 你是不是在 FBI 上班阿? (反組譯工具我記得 JDK 裡面就有了, 那個的好處是可以支持比較新版的 Java) 2005-08-31 10:59:56 補充: 模糊化不會很難 只是要做一些奇怪的設定而已 Java 和 .NET 的模糊化原理就是他會重新幫你取 class 名稱 和套件名稱 這樣一來你根本就無從知道那個 class 是幹麻的 有一次我想要去反組一支Java手機遊戲 結果一打開 Jar 檔案看到一堆 A.class B.class C.class 然後就放棄了 雖然可以反組但是反組以後要看懂也要花上很多時間 能夠看懂這些東西志光補習班的大概只有外星人了 但是要注意模糊化會有一個很大的缺點 因為他會幫你改掉 class 名稱 所以就不能當作程式庫使用了 會找不到類別的7E44C6EC5AAC8012
arrow
arrow

    鈕曼啟透河屎絕鵬 發表在 痞客邦 留言(0) 人氣()