編譯後的代碼可以恢復成源代碼嗎
㈠ 是不是所有的程序都可以反編譯得到原代碼
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。
㈡ complie之後的文件怎麼恢復成原來的源代碼的樣子
不行的吧
㈢ 請問被編譯後的易語言程序還能重新搞回未編譯的樣子嗎
一般情況下是不可能完全和原先一樣的,只能用反編譯器看原先的源碼
㈣ 用C++編出的exe文件能否被還原成cpp代碼
可以但是相當不現實。與匯編的精簡不同,C語言的編譯鏈接會把相當多冗餘的演算法帶到Obj和Exe里去(一來為了兼容不同硬體環境把各種演算法都考慮到,二來因為其效率確實遠不如匯編)。一個幾十KB的Exe可能反編譯出一本字典那麼多的源程序。如果你不嫌費事可以上網找C語言的decompile軟體試試。
㈤ 已知一個程序是C++編寫的,有沒有辦法把她恢復成C++源代碼
C/C++程序(.c/.cpp),首先會進行預編譯,編譯後還是C/C++程序(.i)。這個結果會再進行編譯,結果會是匯編代碼文件(.s)。匯編代碼文件再進行匯編,結果會是可重定位的目標文件(.obj)。可重定位的目標文件再進行鏈接。結果就會產生可執行的目標文件,也就是通常win32平台上的.exe文件。
對於.exe或者.obj文件,我們可以通過反編譯工具(如Unix下的objmp)把它們還原成匯編代碼文件。但是再要往上一步,從編譯原理的角度來說,就很困難了。目前這樣的工具我還沒聽說過。
㈥ exe反編譯後的獲得的源碼能復原為exe嗎
看中間語言。然後用C#寫個出來唄
㈦ 已打包的C#項目如何還原成代碼
如果你說的項目是sln的話,那麼他就是源代碼,可以更改
如果是別人編譯後的exe或dll,去下一個reflector吧,把源代碼復制出來,再自己改吧。
㈧ 怎麼把編譯後的文件改成源碼
對不同的編譯器有各種反編譯軟體,但是不能完全還原,很多地方還讀不通,所以想知道源碼是不可能滴!
㈨ 有可以將exe文件還原成C++文件或VF等源代碼的軟體嗎
這叫反編譯。用vc寫的程序編譯後的執行文件為.exe,反編譯後還原出vc源碼,用vf寫的程序編譯後的執行文件為.exe,反編譯後還原出vf源碼,不存在「從exe文件里還原出VC或VF的源代碼」的「或」的情況。
反編譯vf的軟體叫unfox,網上有down,現在的版本是3.幾