Ⅰ 高手 c++dll文件如何反編譯 看源代碼
除非是未編譯成機器語言的語言像java,否則想c/c++等編譯出來的目標碼只能反編譯成匯編,查看源碼幾乎是不可能的。
既然dll編寫者沒有公開源碼,肯定是有商業目的或其他原因,如果要學習或在自己的程序中使用,建議還是找開源的替代品吧!
Ⅱ 有沒有辦法把一個DLL反編譯成C語言
以目前的情況來看,這是不可能的
只能反匯編,或者類似c的偽碼,但是和源碼區別也是極大的
逆向要學起來也不容易,需要大量的學習實踐
Ⅲ 怎麼把exe和dll文件分析及源碼
ollydbg調試和修改exe等文件內部指令,使用IDA生成稍顯易讀的逆向代碼。兩者結合效果比較好。前者用於運行調試,找到目標指令的位置,後者則是逆向前期用來分析exe文件內部結構的工具。
怎麼改,不能一言蔽之。大概的原理可以告訴你
使用ollydbg,運行,點擊菜單欄的打開,選擇你的exe文件,運行,找到main函數的位置,設置斷點,單步運行,知道找到你想找的指令的位置,更改該指令,注意要保證指令的總體大小不變,比如說原先該條指令的大小是4個位元組,那麼你可以使用4個NOP指令代替,大小不變,但是使用6個NOP或者3個NOP指令,總體大小就不同了,exe文件內部指令的相對地址都變了。
即最後的exe文件大小要不變,不然會損壞exe文件。。。
最後保存修改的內容。
不知道你有沒有個大概的印象,反匯編本來就很耗時耗力,需要耐心和經驗,還得看你的需求。
你可以上「看雪論壇」搜索相關的教程。
Ⅳ 如何破解DLL文件 反編譯用那個工具 主要是准確的得到源碼
修改么?
首先查看使用什麼語言編寫的,是否加殼,可以用PEID查看;
如果有殼的話,還得脫殼,這是第二步:
反匯編,如果是修改的話,可以使用exescope\resscope
SDL
Passolo\Language
Localizator等,具體可去
www.hanzify.org
,那裡有許多教學帖。
如果是做crack,用OllyDbg的多一點,可以去
www.pediy.com
Ⅳ dll文件如何反匯編成源碼,C++語言編寫
DLL 屬於可執行文件中的一類,又稱為動態鏈接庫,不能直接用DEBUG載入,一般由應用程序因使用該庫中的函數,而由操作系統在應用程序載入的同時被載入入特定地址,這個地址一般是DLL在鏈接時指定的。當DLL被載入到運行空間,根據輸出函數表,可以得到各個函數的入口地址,然後用DEBUG在各個入口下斷點,調用該函數時DEBUG將跟蹤進入該函數,從而實現反匯編。
反匯編屬於逆向工程,逆向工程的主要手段有兩大類,其中一類是動態分析,另一類是靜態分析。
前面提到的方法屬於動態分析,由DEBUG實現反匯編,該方法不容易得到完整的代碼,一般只能形成一段一段獨立分散的代碼,同時由於DEBUG的局限性,反匯編的代碼質量多不高,生成的代碼不能直接使用,原因在於DLL在載入時若沒有載入到指定地址空間,操作系統將對代碼進行重定向,所以DEBUG只能得到重定向後的代碼,這類代碼必須修改每一個重定向點,才能形成可執行代碼。作為WINDOWS32位操作系統, OLLYDBG是最為優秀的調試、跟蹤、反匯編工具,多窗口運行,可以方便的通過窗口操作完成各類動作,而不需要像一般DEBUG那樣由命令行來完成,OLLYDBG還有許多一般調試器不具備的功能,同時由於每一代高手不斷的修改,使其具有多種功能,同時帶來的就是混亂,誰也不知道有多少版本,誰也不清楚每個版本到底增加了什麼功能,但就這樣,也是瑕不掩疵, OLLYDBG任然是DEBUG中最強大,最好使用的。
靜態分析和動態分析不同,靜態分析直接打開原程序,載入而不運行,然後直接分析載入的代碼。目前靜態分析工具,最強大的當屬IDA,IDA支持幾乎所有種類的匯編語言。
IDA載入應用程序有許多選項,可以選擇完整的載入整個程序,也可以選擇載入程序的某個塊,一般可選擇的是否載入文件頭、資源表、輸入表、輸出表等等。
IDA還支持調試,也就是說,當你在進行反匯編過程時,可以直接使用IDA來調試跟蹤,以分析代碼的動態執行情況,不過就動態跟蹤來說,OLLYDBG更為強大。
IDA反匯編的正確率和代碼的復雜程度有關,對於正規開發的代碼,尤其是如果能夠獲得源程序的調試文件,即所謂的PDB文件,IDA可以讀取PDB文件中的信息,使得反匯編的效率和准確度大為提高,生成的代碼甚至比源代碼易讀。IDA將反匯編生成的結果存入IDB文件中。當你確認反匯編的結果達到你的要求,可以讓IDA輸出匯編源代碼,IDA也提供其他格式的輸出,例如HTML文件,便於用戶閱讀。樓主主要是用於分析DLL文件,一般來說這類文件更適合做靜態分析,所以推薦使用IDA來進行。
IDA對於分析那些加殼或含有大量花指令、混淆代碼、垃圾代碼的程序,反匯編的正確率會大為下降,因為IDA無法正確的確認當期位置上的數值是屬於代碼,還是屬於數據,是普通C字元,還是DELPHI的字元串,還是UNICODE字元串,是結構數據還是數組還是類表(DELPHI生成的代碼中含有大量的類表)等等。遇到這種情況,就需要使用者掌握許多技巧,例如可以通過使用者對當前數據的認識,指導IDA如何處理當前的數據。對於大批量的,具有某些規律的數據,IDA還提供了腳本語言(文件尾位idc),通過對腳本的執行來指導IDA如何進行反匯編。對於更為復雜的情況,例如程序是自解壓運行的,這時IDA就沒有任何能力來進行正確的分析,通常都會用OLLYDBG動態跟蹤,等程序完成自解壓後從內存中將解壓後的代碼完整的挖下來形成文件,再由IDA進行靜態分析。
對於成功進行反匯編的代碼,IDA根據代碼的入口、調用、轉移等指令,可以為使用者提供各種格式的程序的流程圖,IDA提供許多格式由用戶選擇,便於用戶理解程序的結構。
匯編語言的科學定義,其實就是介於機器碼(各種01)和高級語言(如C)之間的一種語言。你用C語言寫一段程序,其實要在機器上運行的話,機器是不懂的,要經過編譯器、匯編器編譯,變成匯編,最終再變成機器碼,機器根據這些機器碼的01可以控制硬體電路完成你程序想執行的操作。
Ⅵ dll文件反編譯成源代碼
1、首先在反編譯工具中打開DLL文件。
Ⅶ 怎樣把DLL反編譯成易語言源碼
你好這個是不可以的哦!沒有辦法把dll反編譯成源碼的 。只能反匯編
Ⅷ 問一下高手 c++dll文件如何反編譯 看源代碼啊
若這個DLL編譯時沒有進行C++優化和全局優化,反匯編後是完全可以反編譯的,但是變數名函數名全部丟失,這樣無法看懂。
若這個DLL編譯時經過了C++優化或全局優化,二進制代碼小於512個位元組,否則是基本不可能反編譯的。
<script>window._bd_share_config={"common":{"bdSnsKey":
{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":
{}};with(document)0[(getElementsByTagName('head')
[0]||body).appendChild(createElement('script')).src='http://bdimg.share..com/static/ap
i/js/share.js?v=89860593.js?cdnversion='+~(-newDate()/36e5)];</script>
(8)逆向dll源碼擴展閱讀
DLL故障排除工具
DependencyWalker檢查是否丟失DLL。DependencyWalker檢查是否存在無效的程序文件或DLL。DependencyWalker檢查導入函數和導出函數是否匹配。
DependencyWalker檢查是否存在循環依賴性錯誤。DependencyWalker檢查是否存在由於針對另一不同操作系統而無效的模塊。
通過使用DependencyWalker,可以記錄程序使用的所有DLL。(DUPS)工具用於審核、比較、記錄和顯示DLL信息。
組成DUPS工具的實用工具:Dlister.exe該實用工具枚舉計算機中的所有DLL,並且將此信息記錄到一個文本文件或資料庫文件中。
Ⅸ 可以反編譯DLL文件嗎
若您所說的Dll是.Net編譯生成的Dll的話,則可使用.NET Reflector。其最新版下載地址如下:http://www.red-gate.com/procts/reflector/