反編譯代碼還原
㈠ 如何將反編譯的文件還原成工程文件
個人的想法是 你自己再創建一個android程序,然後將你反編譯過後的代碼加到裡面去。 你反編譯了啥軟體,這么容易就被你反編譯了
㈡ 是不是所有的程序都可以反編譯得到原代碼
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。
㈢ VB反編譯還原代碼 求助
如果說 VB3、VB4 還有可能的話,那麼 VB5、VB6 反編譯就是完全的痴人說夢了,VB6 已經不是純粹的解釋性語言了,根本不可能反編譯出完整的源代碼,對於這種語言寫出來的程序,只能獲得中間語言或低級語言。一般來說 VB6 都是 P 代碼,而 P-Code 的代碼逆向回來只能自己看,機器是識別不了的。
舉個例子:
比如在 VB6 中有一句代碼 : MsgBox "Decompile Test."
那麼反編譯出來的結果就是:
(代碼太長不貼,這里貼主要的)
...
mov dword ptr [ebp-58], 004012E4 ; 這里把 "Decompile Test."的地址弄進去了。
...
call dword ptr [<&MSVBVM60.__vbaVarDup>]; 可以清楚的看出來,復制了一份變數的句柄。因為VB里字元串指向的是內存地址。
...
call dword ptr [<&MSVBVM60.#595>] ; 這一句彈出了MsgBox.這里如果跟進去的話是一大堆API 。
...
所以正常反編譯(學匯編語言和計算機編譯原理去吧)的話,看到段了就會知道這是一個 Msgbox 函數,但是具體顯示的內容是什麼,那是根本看不出來的。
P.S. 針對樓上[你不懂就別亂說]說的插一嘴,未加殼的 .NET 為何能被反編譯出源代碼,那是因為 .NET 是託管,而託管有中間語言,所以它的源代碼被編譯成 msil 這種中間語言而非像 VB6 直接編譯成機器語言了。
㈣ 反編譯exe文件就是把exe還原為匯編
首先了解一下概念,exe程序只是WIN下PE格式的可執行文件的一種,而所謂的計算機執行的代碼只是一串
二進制數
,跟數據沒區別,當CS,EIP指向哪,哪裡就是程序,而匯編語言之所以叫最底層的語言,是因為,
匯編的每一個語法,都應對了一串二進制的指令,這也就是
反匯編
的原理,所以
NO1.一、
反編譯
exe程序
就是
把
exe
還原為匯編語言嗎?,這句話,不能叫還原,應該叫解釋,「解釋」的東西,沒還原的那麼逼真,比如,在匯編
源程序
中所有的標號和注釋,進行編譯後,變成二進制可執行文件後,在反匯編,標號就變成數字了,而注釋更是沒了.....
二、除了
還原為
匯編語言,還能
反編譯為
其他
高級語言
嗎?不能,高級語言的語法是建立在大量的計算機
二進制代碼
之上的,比如你C語言隨便調用一個子函數,到了二進制中,他是先壓棧,參數(編譯後參數從右往左壓,每個語言還不一樣),然後就是call
子函數,子函數運行後,他還要清理堆棧,所以你一個句簡單的高級語言,其實蘊含了大量的代碼,而高級語言編譯後的程序,就脫離了他的開發環境,樓上說的會引起你誤會,Java的中間碼,可以用他自帶的反編譯工具,因為Java不是
編譯器
,而是
解釋器
,所以他不編譯,只是解釋他的中間碼
NO2.所有的exe都可以反匯編,但是你要注意,不只exe這種pe格式,linux下可執行文件是elf,所以你在反匯編的時候,要注意可執行文件的文件的頭,而早期的DOS只是純二進制代碼,沒有
頭文件
,這個很重要,你要反匯編什麼格式,就要選擇相應的工具
NO3
.exe反匯編,當然是OD,不過,我對OD不熟悉,好像他只支持WIN下的反匯編
㈤ EXE文件反編譯成源碼
EXE文件可以通過步驟來反編譯成源碼,具體步驟如下:
1、在網路上搜索下載反編譯工具ILSpy,ILspy是一個開源的.net反編譯軟體,使用十分方便。解壓後如圖,雙擊.exe文件打開解壓工具。
(5)反編譯代碼還原擴展閱讀:
反編譯也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。
exe是編譯好的程序文件 要看結構就得反編譯 但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。 所以要要看結構不止要會反編譯 還得精通匯編語言。
㈥ VB反編譯出來的代碼有沒有辦法還原
沒有辦法死了這條心吧 就好比蘋果榨汁了 你讓蘋果汁還原成蘋果一個道理 反編譯頂多就是讓你看到蘋果渣子,讓你知道它的外形 也就是界面而已
㈦ 請教大家一個通過反編譯android代碼的還原
android代碼混淆是指安卓開發者或者組織為了防止自己的產品敏感信息或者技術機密被人破解,而在生成apk文件的時候,通過設置一些替換規則,使java文件中指定的代碼類的名字或者成員名字變為沒有任何意義的字母,然後編譯成class文件的過程。
㈧ 反編譯是違法的嗎
反編譯是違法的,反編譯是指計算機軟體反向工程( Revers e engineering )也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
根據《共和國著作權法》規定有下列侵權行為的,應當根據情況,承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任:
(一)未經軟體著作權人許可,發表或者登記其軟體的;
(二)將他人軟體作為自己的軟體發表或者登記的;
(三)未經合作者許可,將與他人合作開發的軟體作為自己單獨完成的軟體發表或者登記的;
(四)在他人軟體上署名或者更改他人軟體上的署名的;
(五)未經軟體著作權人許可,修改、翻譯其軟體的;
(六)其他侵犯軟體著作權的行為。
㈨ 反編譯出源代碼後,怎樣修改並且編譯回去
反編譯完成並且修改代碼完成後,輸入代碼:apktool
d
framework-res
即可完成回編譯
回編譯後的新的
apk在framework/dis
文件夾裡面
如果反編譯的是系統文件,比如,SystemUI.apk
那麼必須進行掛載框架,反編譯時,必須敲入一下命令:(然後再重復7-9步驟)
apktool
if
framework-res.apk
apktool
if
SystemUI.apk
對於三星手機(比如9100、9108/9100G),如果反編譯SystemUI.apk要敲入一下命令進行框架掛載apktool
if
framework-res.apk
apktool
if
twframework-res.apk
apktool
if
SystemUI.apk
回編譯的命令是
apktool
b
XXX
(沒有後面的apk後綴)反編譯的命令是
apktool
d
xxx
(有後面的apk)