程序能反編譯嗎
任何語言編譯出來的程序都可以反編譯。有些是解釋性語,比如:asp,php,vba,script,他們不用反編譯;有些是託管應用程序,幾乎可以100%反射回去,比如:java, c#;有些編譯出來是二進製程序,反編譯出來就是匯編語言,比如:c,c++,vc,vb,vfp,pb,delphi。
② 是不是所有的程序都可以反編譯得到原代碼
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
③ 對於一個已經編程好的程序,是否可以對他進行反編程
當然可以, 上網搜,可以搜到大把反編譯器, 這樣可以把別人做好的應用程序反編譯成程序代碼,從而進行分析。
以java為例,java代碼寫好後,編譯並打包成 .jar 可運行文件(相當於.exe)。這時可以上網找到比如「小穎反編譯器」之類的工具進行反編,這樣又可以把.jar反編成一堆原始的java代碼。
由於有這個問題,所以程序員們為了防止自己的工作成果被人抄襲後來就產生了混洧器, 利用混洧器可以將jar文件中的資源進行混洧,這樣雖然可以將.jar還原成源代碼,但現在的源代碼被隨機地打亂了,很難看懂,基本不具備可讀性。
當然有矛就有盾, 再歷害的混淆器也有歷害的反編器來破解它。
就像病毒和殺毒軟體一樣相生相剋
④ 反編譯違法嗎
法律分析:不違法。反編譯不違法。反編譯是指計算機軟體反向工程也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。
法律依據:《計算機軟體保護條例》 第三條 本條例下列用語的含義:
(一)計算機程序,是指為了得到某種結果而可以由計算機等具有信息處理能力的裝置執行的代碼化指令序列,或者可以被自動轉換成代碼化指令序列的符號化指令序列或者符號化語句序列。同一計算機程序的源程序和目標程序為同一作品。
(二)文檔,是指用來描述程序的內容、組成、設計、功能規格、開發情況、測試結果及使用方法的文字資料和圖表等,如程序設計說明書、流程圖、用戶手冊等。
(三)軟體開發者,是指實際組織開發、直接進行開發,並對開發完成的軟體承擔責任的法人或者其他組織;或者依靠自己具有的條件獨立完成軟體開發,並對軟體承擔責任的自然人。
(四)軟體著作權人,是指依照本條例的規定,對軟體享有著作權的自然人、法人或者其他組織。
⑤ 任何程序都可以反編譯嗎為什麼有一些程序不可以反編譯
javap是用作反編譯的,但是javap只能給出你要反編譯的class的結構,比如有什麼方法,有什麼static或者非static的變數什麼,但不可能產生源代碼編譯後的文件不是原代碼文件,所以不能直接拿來編譯。希望樓主採納
⑥ 反編譯一個易語言程序可以做到嗎
反編譯的原理應該是一個語言的語法關鍵字和程序的匯編結構有相同部分,然後就類似查找替換這樣噠。不過需要一個翻譯引擎and蠻多的工程,可以倒是可以所以說
然後以前的易語言程序倒是可以,現在的話易語言換了編譯方式所以emmmm,略難
⑦ 用python2.7.1寫的小程序可以反編譯得到它的源代碼嗎
可以,網上有很多在線的反編譯工具,給你發幾個鏈接:
1、http://depython.com/index.php
2、https://github.com/eble/pyc2py
3、http://tool.lu/pyc/
不過好像第一個只適用於Python2.0-2.6,第二個適用於Python2.6,第三個應該可以反編譯2.7,你可以都試一下。
⑧ 現在的delphi xe7寫的程序還能被反編譯嗎
可以的,反編譯就是把exe這類的可執行程序代碼變成匯編,然後再通過對匯編指令的分析,還原成delphi的源碼,只是難度增加了!
⑨ 反編譯什麼意思,具體該怎麼用
反編譯:高級語言源程序經過編譯變成可執行文件,反編譯就是逆過程。計算機軟體逆向工程,又稱計算機軟體恢復工程,是指對其他軟體的目標程序(如可執行程序)進行「逆向分析和研究」,從而推導出設計思想、原理、結構、演算法、處理過程、操作方法等要素,等被其他軟體產品使用,在某些特定情況下可能會衍生出源代碼。反編譯可以作為開發軟體時的參考,也可以直接用於軟體產品中。
(9)程序能反編譯嗎擴展閱讀:
如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。