『壹』 反編譯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下的反匯編
『貳』 反編譯什麼意思,具體該怎麼用
反編譯:高級語言源程序經過編譯變成可執行文件,反編譯就是逆過程。計算機軟體逆向工程,又稱計算機軟體恢復工程,是指對其他軟體的目標程序(如可執行程序)進行「逆向分析和研究」,從而推導出設計思想、原理、結構、演算法、處理過程、操作方法等要素,等被其他軟體產品使用,在某些特定情況下可能會衍生出源代碼。反編譯可以作為開發軟體時的參考,也可以直接用於軟體產品中。
(2)匯編反編譯擴展閱讀:
如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。
『叄』 關於匯編語言的翻譯,將下面的ASM碼反編譯為C語言,謝謝
r1=r0>>0x1f
r1=r0+(r1<<0x24)
r1=r1>>8
r1=r0-(r1<<8)
不對隨便寫寫
『肆』 禿兄,java 反編譯 匯編 注入什麼地我也,需
題主的原問題:
用JD-GUI和JAD反編譯了幾個class文件,結果JAD說不能完全反編譯,JD-GUI則給出了一大堆匯編代碼。
其實這個一般不會把它叫做匯編啦。就只是Java位元組碼的對應的文本形式而已。當然如果非要把Java位元組碼指令集看作真實機器的指令集,那把這個文本叫做「匯編」倒也不是不行…跑題了。
這是什麼情況???
情況就是題主正好用的倆反編譯器對比較混亂的位元組碼都處理得不好,掉坑裡了。
不過題主只貼了JD-GUI的情況。請問用JAD的時候題主具體遇到的是啥問題?
要怎麼樣才能變成java的代碼???
換個反編譯器(並非開玩笑
用下面提到的CFR和Procyon都可以。
『伍』 急急急 反編譯軟體把EXE文件反譯成什麼 是機器語言還是匯編語言 是哪個匯編語言
首先你得清楚,微軟的exe可執行文件(即PE文件,有PE規范定義)的特徵,才能使用不同的反編譯軟體對exe進行反編譯。
如今,exe一般分託管代碼和非託管代碼兩類(託管代碼是由C#等語言生成的.NET運行時庫支持運行的中間代碼,不是CPU晶元可直接執行的二進制機器碼;而非託管代碼是CPU晶元看執行的機器碼)
非託管代碼反編譯後,其實就是簡單的將二進制機器碼用匯編表示,所以是匯編語言。
託管代碼反編譯,好的反編譯器直接將中間語言位元組碼反編譯成高級語言代碼,如C#
------------------------------------------------------
另外,在什麼平台運行的exe正確反編譯(需要選擇正確的晶元結構)為同平台的匯編語言。
如嵌入式ARM晶元上運行的Win CE系統上的exe就應當正確反編譯為ARM匯編
x86的就應當反編譯為x86匯編。
『陸』 匯編與反匯編
可以的,但是反編譯的效果最常見的就是反編譯成匯編語言,但是說你寫一個C的程序已經編譯程.exe文件了,然後又想用工具對.exe文件進行反編譯,那麼就只能反編譯到匯編語言的狀態,不可能反編譯到C的狀態,雖然現在網上有些人能反匯編成C,但是效果也不好,有很多的錯誤。
編譯的過程是不可逆的,就好像你把豬殺了做成香腸,然後你又想把想把香腸變成豬一樣。最多能把香腸又變成肉末,變成豬你聽過嗎?道理就這樣
『柒』 反匯編與逆向編程的區別
反匯編只是按將010二進制碼這樣的目標碼分析解釋成Assembler ,所以我們叫DisAssembler,當然這與教科書上的匯編語言是不同的,這是由編譯器優化生成的目標代碼,而反匯編只是將通過如intel 指令手冊就可以將之轉換出來,而逆向編程是在反匯編的基礎上,然後分析他的邏輯,從而用高級語言或是流式語言進行二次編程,比較常見的,就是使用嵌入asm(c語言),再則因為匯編的條件啥的其實基本都在goto,所以你用老一套的跟,只到你跟出自己的思路來了,那就真的就是逆向編程了,不過現在多是以上兩種,當然高手我就沒資格評論了.
『捌』 keil uvision4 如何反編譯c語言 到匯編語言!!就是把c 編譯成匯編!!!謝了
這個過程不是「反編譯」而是「編譯」。
正常編譯過程中都會生成臨時匯編文件的,你可以在項目選項中的lst輸出中勾選Assembly,即將編譯的中間匯編代碼輸出到LST文件中。
『玖』 反編譯和反匯編有什麼區別
反匯編是把機器碼翻譯成的匯編;
反編譯是把機器碼翻譯成高級語言的過程,但通常要有其他線索輔助才能完成。
『拾』 為什麼Java反編譯後帶有匯編代碼
那個不是匯編。。。是反編譯工具無法識別的位元組碼(bytecodes,java中間代碼),因為無法識別,自然只能直接把位元組碼打出來給你看了。
你多試幾種反編譯工具,並不是所有的都會出的,也不是所有的都在同一個地方出。這個取決於反編譯工具的作者對位元組碼的理解。