當前位置:首頁 » 編程軟體 » code獨立項目反編譯

code獨立項目反編譯

發布時間: 2022-05-17 01:33:59

1. 如何在Visual Studio和CodeBlocks中反編譯C++代碼

沒殼的就好辦了,你可以試試ResourceHack這樣的軟體,它支持修改程序資源,通常用於做漢化。軟體的文字和鏈接有時候是按對話框資源被編譯到exe或dll文件中的,ResourceHack之類就是讀取這種資源的。別用於搞破壞和賣錢,否則…

2. 怎樣反編譯程序

高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。
但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
反編譯是一個復雜的過程,所以越是高級語言,就越難於反編譯,但目前還是有許許多多的反編譯軟體: VB: VBExplorer 、VB反編譯精靈和VBRezQ;只能反編譯界面圖像,好像代碼不能完全反編譯 java: JAD ;java的反編譯比較常見,所以反編譯比較完全, 將class文件反編譯成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易語言:E-Code Explorer.exe(易格式可執行文件分析器)。

3. EXE文件反編譯成源碼

EXE文件可以通過步驟來反編譯成源碼,具體步驟如下:

1、在網路上搜索下載反編譯工具ILSpy,ILspy是一個開源的.net反編譯軟體,使用十分方便。解壓後如圖,雙擊.exe文件打開解壓工具。

(3)code獨立項目反編譯擴展閱讀:

反編譯也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。

exe是編譯好的程序文件 要看結構就得反編譯 但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。 所以要要看結構不止要會反編譯 還得精通匯編語言。

4. 請教下 怎麼反編譯 網站BIN文件下的 App_Code.dll文件我想修改裡面的東西 但是 不知道怎麼修改

沒有編程基礎就不要去瞎搞了

5. 如何反編譯一個exe文件,並修改裡面一句代碼

1、首先打開瀏覽器,網路搜索「反編譯工具ILSpy」,選擇一個安全的網站進行下載。

6. 我自己做出來的E程序 用E-Code Explorer來反編譯 為什麼不可以

生成的程序是不能看到源代碼的,不過可以看到那個程序的資源,用E-Code Explorer 反匯編調試由易語言編譯生成的易格式可執行文件,分析內部結構,查看其中的各項數據。1。格式分析:分析易格式可執行文件的總體結構,查看對應項的數據。分別對PE骨骼(PE頭)和易格式原體分析,以樹形結構清晰的顯示,同時輔以詳細的分析表格。2。反匯編分析:快速的靜態反匯編易格式可執行文件。提供方便的跳轉、調用目標地址的代碼預覽功能。3。窗體分析:對易格式可執行文件中包含的窗體數據分析。以樹型結構清晰的顯示窗體單元的從屬結構。詳細的控制項屬性顯示、准確的事件處理函數定位、與反匯編模式便捷的切換,讓使用者可以立即進入要調試的事件函數領空,避免在runtime的空間里四處打轉浪費時間。這一點對於調試非線性事件驅動類型的程序是必須的。4。符號修飾:可以調用易語言支持庫作為符號表,對反匯編後的代碼進行修飾,可以直接分析出函數所調用的方法,操作的屬性,使用到的常量、基本數據類型、自定義數據類型和窗口單元。極大地提高了代碼的可讀性。5。內部數據分析:能夠分析出程序使用到的常量、API函數、服務,調用的支持庫。6。多種載入方式:支持從文件載入和從某一進程的內存中直接載入反匯編。直接從進程列表附加,可以避免一部分AntiDebug造成的調試困難。7。支持多種格式:支持標准PE可執行文件,易格式原體文件,其他類型的易格式文件。均可正確分析。8。易格式捕捉者:對於不明外殼的易格式可執行文件(如:加殼後的,通過其它手段封裝的),能夠方便快速的進行分析。9。提供十六進制文件查看功能。10。提供多種輔助工具,完成從內存mp易格式原體、修復重定位信息、易格式原體生成EXE文件等功能。11。分析結果和反匯編結果均可直接導出生成報告文件。12。支持自定義反匯編,HEX查看的環境顏色,你可以選擇自己喜歡的顏色來閱讀代碼。13。詳細的分析設置,可以自己設置最合適的調試環境。14。提供文件拖放功能,直接進行分析或調試。15。支持從命令行獲取要分析的文件。其他更多的功能等待您在使用中發現…………

7. U3D如何做代碼混淆

Unity代碼混淆方案
內容提要:Unity引擎下的代碼保護,由於Unity引擎的一些特殊性,實行起來較為復雜,在國內外業界並沒有現成的方案。筆者通過在《QQ樂團》項目上的實際嘗試,得出了一種具體可行,能夠有效保護代碼邏輯的方案。特此分享給關注Unity引擎的項目,希望能提供一些的參考。
背景
Unity引擎上的程序執行在Mono運行時上,使用Mono編譯出的程序集格式與.NET標准一致。C#是Unity引擎下主要的開發語言,它具備不少高級語言特性,如反射、元數據、內置序列化等。但C#同時也是很容易被反編譯的語言,如果不採用任何保護措施,使用常用的工具(.NET Reflector)便能很容易得到可二次編譯的代碼。對項目運營帶來了比較大的風險。
.NET平台下通常的保護手段是混淆編譯出的程序集。VisualStudio自帶了一個混淆工具Dotfuscator可以對程序集進行混淆。功能包括名稱修改,流程混淆,字元串加密等。經過Dotfuscator混淆後的程序集,能夠避免被常用反編譯工具破解。變數的表意性被破壞,同時函數的內部流程也被混淆(如下[B1] )。能有效起到保護源代碼的效果。
publicclass181: 218
{
// Fields
publicuint0;
publicushort1;
publicstaticreadonlyuint2;
publicstaticreadonlyuint3;
// Methods
static181();
public181();
public95.02();
public95.02(ref515A_0, uintA_1);
public95.02(79A_0, refuintA_1);
public95.02(ref79A_0, uintA_1);
public95.02(byte[] A_0, intA_1, refuintA_2);
public95.02(ref481A_0, intA_1, charA_2);
public95.02(refstringA_0, intA_1, charA_2);
public95.02(refbyte[] A_0, intA_1, refintA_2, uintA_3);
public95.03(ref79A_0, uintA_1);
public95.03(refbyte[] A_0, intA_1, refintA_2, uintA_3);
public95.04(refbyte[] A_0, intA_1, refintA_2, uintA_3);
}
public95.00(refsbyteA_0, intA_1)
{
// This item is obfuscated and can not be translated.
goto Label_0006;
if(1!= 0)
{
}
95.0local= 95.0.0;
bytenum= 0;
local = this.0(refnum,A_1);
A_0 = (sbyte) num;
returnlocal;
Unity引擎下,Mono編譯出的程序集,由於採用與.NET相同的格式標准。能夠直接被Dotfuscator混淆。但Unity引擎有一些特殊的地方,使混淆工作與一般的.NET程序存在差異。第三節將主要討論這些特殊點。
Unity引擎下代碼混淆的特殊性
代碼被資源引用[B2] 。Unity的可視化編輯特性在設計上的關鍵之處在於使代碼能夠以組件的形式依附到資源實例上。相比傳統游戲,Unity的兩類資源(scene和prefab)不僅包括數據,還包括附加在資源上的類對象。也就是說,這兩類資源的存儲格式中存在唯一標識某代碼類型的數據。混淆流程必須不破環這種對應關系才能使資源上的代碼邏輯正確被執行。(Unity這樣設計的意義並不是本文討論的重點,而另一篇分享個人對Unity可視化編輯的理解的文章中將會詳細說明。)
發布到Web的Unity項目,在生成播放器可執行包(*.unity)的介面中,將編譯程序集和打包這兩個步驟捆綁在的一起。我們沒辦法像普通.NET程序那樣,對編譯出的程序集進行混淆後再打到播放器可執行包中。
UnityEngine按函數名進行調用。MonoBehaviour是Unity引擎的一個重要的組件基類。其上的很多方法,Unity是通過方法名稱進行訪問的,如Awake、Start、Update等等。這些方法如果在混淆中被改名,將使方法調用失敗。這個問題相對比較好處理,Dotfuscator的重命名功能提供了排除配置。我們只要得到繼承於MonoBehaviour的所有類型,就能生成相應的排除配置,告知Dotfuscator不要對這些方法進行重命名。生成的配置節選如下[B3] :
<option>xmlserialization</option>
<excludelist>
<type name="CEventMgr|CGameRoot|…|…" regex="true" excludetype="false">
<method name="Update"regex="true" />
<method name="LateUpdate"regex="true" />
<method name="FixedUpdate"regex="true" />
<methodname="Awake" regex="true" />
<customattributename="System.Runtime.CompilerServices.CompilerGeneratedAttribute"regex="true" />
<method name=".*"regex="true" />
<field name=".*"regex="true" />
</type>
<type name=".*"regex="true">
<customattributename="ANoRenameInObfuscate" regex="true" />
</type>
<type name=".*"excludetype="false" regex="true">
<method name=".*"regex="true">
<customattributename="ANoRenameInObfuscate" regex="true" />
</method>
</type>
思路
何時混淆?由於Web項目編譯和打包的過程是捆綁在一起的,官方沒有提供獨立的介面。(之前有跟官方反饋,但目前官方並沒有提供具體計劃。)想自己來分析官方的打包格式是行不通並且不太科學的。僅剩的辦法就是自己將代碼編譯成DLL,混淆之後再添加到Unity項目中。
順著這條思路,筆者在《QQ樂團》項目上作了嘗試。將項目中所有執行相關的代碼(不包括編輯器擴展的代碼)移出,指定相關的Unity依賴庫,編譯成DLL。再將此DLL復制到原項目中。這時意料之中的事情發生了——項目中所有資源上的代碼引用全部丟失。為了找到資源對代碼的映射形式,筆者調整Unity編輯器的設定,將資源的序列化格式改為文本格式,並進行對比分析。發現資源中是通過一個GUID來對應具體代碼的[B4] 。(如下)
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID:11500000, guid: , type: 1}
m_Name:
mInt: 1
mFloat: .5
中的類型雖然還沒有進行過混淆,但GUID已經發生了變化。將新的GUID替換到資源文件中,引用關系果然恢復了。
Unity引擎下的特殊問題都是可以解決的。於是順著這思路,開發了若干工具,得到了前後GUID的對應關系,並掃描所有資源以進行GUID的替換。另一方面,在混淆之後,類型的變數名發生了改變,資源中變數名賦有具體的值,也需要替換資源中的變數名對應到混淆後的變數名。這一切花費了不少的精力,終於是把工具都做成了。
然而人算不如天算,最終導致此方案走進死角的是一個之前很難意料到的問題:Unity引擎在處理DLL中的模版類型時存在缺陷——DLL中的模版類型沒有GUID,不能被資源所引用。這個問題在Unity官方網站上有少量反饋,而官方承認了這個bug,且沒有給出解決方案。而《QQ樂團》的項目在UI操作上比較廣泛地使用了模版類型,去除模版的使用談何容易。就這樣,這么一個不經意的問題為這個嘗試的方向畫上了句號。
「系著枷鎖跳舞」,這句話是形容的是在各種條件約束下盡可能的追求解決方案的一種狀態。總結之前的失敗,最終還是找到了實際可行的改進方案,並成功應用到《QQ樂團》的Web版本和微客戶端版本上。
最終的思路是將項目進行分層。獨立出一個不被資源引用的,包含最敏感的協議解析和各個系統模塊的「邏輯層」,將邏輯層的代碼獨立編譯成一個DLL,進行混淆再包含到項目中。邏輯層之外的代碼主要包括被資源引用到的,或是系統模塊部分介面定義這樣的不太敏感的內容,姑且稱為「行為層」。為了讓邏輯層可以獨立編譯,我們要求邏輯層可對行為層進行引用,而行為層則只能通過留在行為層的邏輯層介面訪問邏輯層。這樣我們就保護了我們最重要的代碼,同時繞過了資源引用代碼的問題。
這個方案對項目架構提出了一定的要求。一是要求敏感代碼和資源保持獨立,需要一個框架來載入各個模塊,而不是直接將模塊代碼直接附在場景物體的資源中。二是要求層次清晰,不允許反向依賴。有利於《QQ樂團》項目的消息是,《QQ樂團》從最早期就實現了一個較清晰的架構管理方法。因此花費了一定的時間進行分層,和實現介面訪問機制後,就成功執行了這個方案。
實際混淆步驟。《QQ樂團》是使用VisualBuild來執行版本構建和發布流程的。以下介紹版本構建中混淆相關的流程:
從Unity項目的Assets目錄中拷貝出邏輯層的代碼目錄(CodeGameLogic)。和編輯器擴展代碼(避免混淆後編輯器擴展代碼對邏輯層的依賴丟失導致編譯出錯)。
調用Unity.exe命令行編譯剩餘的行為層部分:
這個函數實際執行了:
BuildPipeline.BuildPlayer(new string[] {"Assets/obfuscated.unity" }, "WebPlayerObfuscated",
BuildTarget.WebPlayer, BuildOptions.None);
Editor程序集(也就是編輯器擴展程序集)時編譯失敗,中斷編譯過程,避免在BuildPlayer過程結束時構建生成的DLL被清理掉。BuildPlayer之前故意在Editor目錄下弄一個錯誤的代碼文件即可。
將生成的行為層DLL拷貝到邏輯層構建目錄。行為層DLL的路徑是在項目的Library/ScriptAssemblies下,有Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll兩個文件。另外也拷貝邏輯層依賴的其它DLL到構建目錄,包括UnityEngine.dll,以及項目Plugins目錄下的依賴庫。
調用Mono的編譯器mcs編譯邏輯層DLL——CodeGameLogic.dll。編譯命令如下:
生成DotObfuscator的配置文件」WebCfg.xml」。這里是用自己編寫的工具,掃描CodeGameLogic.dll中的類型,得到不能被混淆的類型名和方法名,加入到配置文件的排出列表中。如「三。3」小節所示。
調用DotObfuscator對CodeGameLogic.dll執行混淆,得到混淆後的CodeGameLogic.dll:
將混淆後的CodeGameLogic.dll拷貝到項目中,然後構建項目。這里要注意的是,如果是構建Web項目,需要將dll拷貝到Plugins目錄。如果是Standalone(即客戶端)項目,直接拷貝到Assets目錄下即可。另外,這次構建是不可以有編譯錯誤的,所以第1部需要移除Editor目錄下的編輯器擴展的代碼。
接下來將構建好的項目與資源合並,就可以得到完整的混淆版本。
總結:
Unity項目的代碼反編譯較為容易。需要在重視代碼混淆工作。
Unity項目的代碼混淆方案實施起來限制較多。本文介紹的方案是筆者知曉的目前唯一可用的混淆方案。對項目的架構分層有強制性的要求。最好是在項目初期就考慮如何對項目進行分層,將需要保護的內容放置在被混淆的層中。

8. C#寫出來的代碼,反編譯之後能看到源代碼,怎麼樣防止別人的反編譯。求高手指點

C#代碼最終會被編譯為 IL,對 IL 進行逆向工程比較簡單,因此一種辦法是向第三方購買一個混淆器(obfuscator),能通過打亂程序集元數據中的私有符合名稱,讓人難以閱讀。但本質上,這種保護是有限的,只是難以閱讀,而不能從根本上避免。
另一種辦法是,在非託管模塊中實現你比較重要的演算法,然後通過 CLR 的平台互操作,來使託管代碼調用它,這樣程序仍然能夠正常工作,但對非託管的本地代碼進行反編譯,就很困難。
一般來說,除非你的這部分代碼非常重要,或涉及核心機密,才需要考慮防止反編譯的做法。一般來說,混淆器也足夠了。

9. e語言編寫的exe程序 如何反編譯成源碼.

這個是目前沒有辦法實現的。

反編譯一般指反向編譯指計算機軟體反向工程(Reverse engineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。反編譯是一項艱巨而復雜的工作。

如果e語言反編譯需要用到的技術過於繁雜,目前開源的資料中並沒有可以准確反編譯的軟體。

自行嘗試需要進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素。

10. 怎樣使用E-Code Explorer進行反編譯易語言編譯的exe程序查看源碼

E-Code Explorer好像是很久以前的了,只能反編譯那個時期的易語言版本寫出來的程序,很久前就不能用了,放棄把~自己編寫吧~~

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:166
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:737
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:149
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:399
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:544
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:632
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:366