ios反編譯unity
⑴ unity3d反編譯能提取場景資源嗎
下面我會從頭介紹一下提取的全過程:
步驟一:首先下載 DisUnity v0.3.1
我解壓到了D:\disunity_v0.3.1 這個路徑 大家根據自己的需求來選擇自己的路徑吧
步驟二:確保安裝了 java JDK 7
檢測是否安裝成功 在cmd輸入 java -version 可以列印出版本號 說明應該沒問題了。如果沒有成功這里就不詳細介紹了 問下度娘或者google一下(雖然最近google有些杯具了),請大家見諒。
步驟三:獲取可以破解的源文件 首先我們需要Android的 .apk 或者 IOS的 .ipa 或者網頁游戲的.unity3d 和 .boundle 文件
Android: 先看看 Android 的 apk 安裝包吧,把下好的文件後綴名.apk 直接改成 .rar 解壓到單獨的文件夾 可以反編譯的文件的路徑就在:解壓後的文件夾\assets\bin\Data
IOS: ios的 ipa的安裝包 也是同樣的原理 把.ipa 改成 .rar 然後解壓到單獨的文件夾 可以反編譯的文件的路徑就在: 解壓後的文件夾\Payload\godoflight.app\Data (這里我用的是神之光舉例子 所以是 godoflight.app)
網頁: 這個我們重點講一下
下面我講一下如何提取unity3d做的網頁游戲的資源
首先我們先要下載 火狐瀏覽器 請大家自行下載吧。
然後安裝 FireBug 插件 上圖了
然後搜索 Firebug 找到後點安裝
安裝成功後這里會有個蟲子的圖標
准備工作完成了,下面我們找一個unity3d開發的網頁游戲 這里我們用 《冰火破壞神》 來舉例,
先登錄游戲,然後打開firebug 如圖 點 [網路] -> [全部] 如果目前網頁中有unity的資源的話 就會在下面的列表裡出現
這里我先清理了一下因為裡面有很多不是unity的資源文件 列表清空了之後 我點 【進入游戲】 就進入了一個載入界面列表裡開始載入新的資源
有.boundle 和 .unity3d 的資源 這就是我們需要的 至於其他的資源 我也是剛剛才嘗試出來的估計就這兩種有用的文件吧 如果不是還請大家補充 大家共同研究哈。
這里已經載入了不少資源了 然後就是蛋疼的下載 因為一直沒有很好的批量下載的方法 我目前還是一個一個的下載 如果大家有好的方法的話 希望可以分享一下 感激不盡。
復制鏈接 然後我用工具下載下來就可以了(我用的QQ旋風)。
到此需要做的准備基本完成下面我們開始反編譯。
步驟四: 打開cmd 進入步驟一中的 D:\disunity_v0.3.1 文件夾中
下面是disunity_v0.3.1中的目錄結構
然後我們可以用命令 disunity extract 需要反編譯的文件的路徑\*.* 就可以了
我的反編譯文件放在了E:\Downloads\szgPJB(jb51.net)\assets\bin\Data 這個文件夾中 用 *.* 就可以把裡面的文件全部反編譯 當然無法識別的文件是沒法反編出來的
從.ipa和.apk中解壓出來的資源 貌似只有 .assets 文件可以反編譯出來
從網頁上下載的.boundle和.unity3d 文件也可以放到一個文件夾 用上面的方法 反編譯出來。
當然 單個文件的話 把*.* 替換成想要反編譯的文件就可以了
⑵ 如何防止Unity3D代碼被反編譯
如果你沒有統一的源代碼,我認為這個問題基本上沒有解決。它可能會下降,而IL iOS平台是有用的在AOT,但基本上沒有其他平台。
另一個想法是包裝,但至少我沒有在移動終端上測試過,但基本上是邁出了一步。另一種方法是在本地插件中編寫一些關鍵代碼,但我不認為這是使用Unity的優點,所以我並沒有真正推薦它。
直接使用GDB轉儲內存運行Android,不管你在內存末端加密的布局是相同的,但都是軟的。因此,這是一個本機插件(麻煩),或者簡單地加密和過濾80%個新的解決方案。
⑶ 如何防止Unity3D代碼被反編譯
根本的解決辦法是:先對DLL加密,然後在Unity的源碼中載入程序DLL之前進行解密。
這就需要通過逆向工程獲得配枝相應培拍敏的Unity源碼或賀頃者是直接向Unity購買Source Code License。
⑷ 如何在IOS設備使用Unity3D
1.獲得Unity和iOS導出器
如果您還未獲得Unity3D工具,不要說IOS了,恐怕任何Unity3D游戲根本無法進行開發,這時,您首先應該到官網去下載最新版本的Unity。該程序目前有兩個版本,分別是免費版(
2.注冊蘋果開發者
接下物告來,您需要做的下一件事便是加入蘋果開發者,這是繼續您IOS開發的必要過程(不注冊,不能上傳軟體,開發了也沒意義)。附帶一提,加入蘋果開發者,需要每年支付99美元。如果您可以承受此代價,那麼,您可以通過以下地址進行注冊:
3.下載並安裝XCode
好
了,如果您已經加入蘋果開發者,那麼,下一件事便是下載並安裝XCode了。這在一開始可能會讓人困惑,有些初次接觸Unity的朋友,可能會認為
XCode是為iOS創造原生應森悔用的,關Unity什麼事?其實,Unity在IOS開發時,也要使用XCode作為中介將C#或JS代碼,編譯為IOS
的本地應用,再發布到iOS設備中,所以,您真正使用的核心,依舊是蘋果XCode,只是Unity3D封裝了具體的操作與轉化過程,您所有的開發將是發
生在Unity上,而非XCode上執行(底層藉助Mono實現,而Mono藉助LLVM翻譯Unity腳本為本地語言)。在這里,XCode的作用只是
將內容從Unity導入到具體設備中。
您可以從蘋果商店中下載XCode:
4.創造一個開發者配置文件
到目前為止,您應該已經下載了Unity(無論正版或破解)以及XCode,並激活了您的蘋果開發者身份。
但
是現在,為了能將您的游戲直接從Unity導入到IOS設備上,您還需要一個開發者配置文件(需要依賴此配置文件,才能讓你移植你所開發的游戲或任何測試
用例到您的IOS設備上)。具體來說,蘋果提供了兩種類型的文件配置方式,即用於開發和測試的開發者配置文件以及用於提交到蘋果商店的分布配置文件。為了
創造開發者配置文件,您需要做3件事:
1、注冊你的設備
2、建立一個應用ID
3、獲得簽名證書。
您可以通過你的蘋果開發者郵件中的引導,來完成這三件事。具體操作可通過地址:
現在選擇Certificates,Identifiers和Profiles,您便能夠從中訪問並管理你的配置文件,蘋果ID等等。
1)注冊你的設備
在
Certificates,Identifiers和Profiles部分中選擇設備。因為這對於蘋果去識別用於測試的特定設備是必要的。這並不會改變你
的設備的任何設置,你能夠輕松地使用自己每天所使用的設備。在注冊你的設備時,你可以點擊+按鍵去添加一個新設備。然後你需要填寫設備的名字(可以是任何
名字)以及UDID(即設備獨一無二的ID)。你將會發現自己可以注冊一個以上的設備進行測試,如果你想罩春明要基於不同設備進行測試的話這邊很有幫助(如一台
iPhone和一台iPad)。
為了找到你的設備的UDID,你需要將你的設備與電腦連接在一起,然後打開iTunes並點擊iPhone按鍵(界面的右上方的),你將看到設備的信息包含了名字。然後你可以將滑鼠停在上方並點擊SerialNumber,這將變成一個常標識,這便是UDID。
這是你需要的數字,你必須將其復制黏貼到MemberCenterPortal的ID部分。現在你便可以注冊你的設備了。記住一旦你注冊了設備,你便只能改變它的名字而不能改變UDID。
2)設置一個應用ID
下一步便是設置你的應用ID。仍然在MemberCenterPortal的Certificates,Identifiers和Profiles,選擇應用ID並點擊+按鍵。
首先提供任何你想要的描述,只要它能夠幫助你記得你的ID是用於做什麼便可。一個好的方法便是為一款應用使用一個獨特的名字並為一款測試應用使用一個普通的名字。接下來你需要設置BundleIdentifier,這是以相反的域符號形式呈現出來「
即:com+你的全名(如果你是一名個體開發者的話)+你的游戲名稱:
com.YourName.TheGameName
這類型的BundleID將很清楚並只能用於唯一的一款游戲中。因此你需要為你的每一款游戲使用不同的名字。然而這是很有用的,這讓你能夠訪問像「游戲中心」和「應用內部購買」等服務。
另一方面,Wildcard的BundleID是以如下形式呈現出來:
com.YourName.*
這里用星號替代了游戲名字。這種格式讓你能夠在多款應用中使用同樣的ID,而無需每次都設置一個不同的名字,但是這卻不允許你使用特定的設備。
現在你已經選擇了繼續並確認了應用ID。將捆綁ID記錄下來,因為之後你將需要在Unity的構建設置中使用到它。
3)獲得開發者證書
現
在,你需要做的第一件事,便是通過你的計算機獲得CertificateSigningRequest。前往
Applications>Utilities>KeychaneAccess,然後是
Preferences>Certificates。確保和
CertificateRevocationList都是處於OFF,並關閉Preference。現在在KeychaneAccess中前往
CertificateAssistant並從CertificateAuthority中選擇RequestCertificate。提供與你在注冊開
發者計劃時使用的同樣細節並點擊繼續。提供一個名字並保存到Desktop。在保存時選擇2048位體和RSA。
現在在你的Desktop中應該擁有一個帶著.certSigningRequest前綴的文件。
現在回到MemberCenterPortal的Certificates,Identifiers和Profiles部分,選擇Certificates>Development(就像你要獲得開發證書那樣),然後按壓+按鍵進行創造。
選擇上傳你保存在Desktop中的CertificateSigningRequest。在你提交前,確保向下滾動頁面並在IntermediateCertificates中找到WWDRCertificate。在你之後需要的時候可以下載它。
現在進行提交,你的CertificateSigningRequest將被發送到蘋果並被另外一個你能夠下載的內容所取代。它將被命名為:ios_development.cer
所以現在你的Desktop上應該擁有兩個證書。即ios_development.cer和WWDRCertificate,你需要雙擊這兩個證書將其安裝於KeychaneAccess。現在你便設置好你的開發者證書了。
4)創造配置文件
在
完成上述三個步驟後,現在的你可以繼續去創造配置文件了。仍然在MemberCenterPortal的
Certificates,Identifiers和Profiles中,前往ProvisioningProfiles>All並按壓+按鍵去創
造一個全新的配置文件。
在
Development和DistributionProfile中做出選擇(這里我們需要的是Development!),然後在下一個屏幕上選擇與該
配置文件相聯系的應用ID,設備和證書(註:這是你在之前步驟已經設置好了的)。最後為配置文件命名並回顧之前的選擇。當准備好時點擊Generate。
現在你便可以看到你的全新配置文件,你需要將其下載到你的Desktop上然後安裝它。配置文件將是一個帶有.mobileprovision前綴的文
件。
現
在轉向XCode,前往Window>Organizer>Devices>ProvisioningProfile,然後雙擊已經下
載到你的Desktop上的配置文件。你便完成了安裝並能夠給予Organizer視圖看到它。最後一步非常重要,因為只有將配置文件安裝到Xcode,
它才能夠正常運行。
一些額外的內容:仍然在XCode,如果你的設備在Devices視圖中仍看不到,那就前往Window>Organizer>Devices,按照名字選擇設備。你可能需要在這個過程中選擇UseforDevelopment,然後提供你的開發者記錄細節。
雖然這是一個較為漫長的過程,但好消息是你已經完成工作了!
現在,您可以開始致力於你的Unity游戲並准備好導出它。
但請記住,您只能注冊設備和創造開發者證書一次,每當你創造一款新游戲時你都需要創造一個全新的應用ID和全新的配置文件。
5.使用Unity發布IOS游戲
當
您准備好導出你的游戲時,啟動Unity3D,選擇File>BuildSettings,確保您選擇了iOS作為平台,並記得包含當前場景到導出
游戲中(使用AddCurrent按鍵)。然後點擊PlayerSeetings按鍵並前往OtherSettings。
將
BundleIdentifier按照你之前設置好的進行設置(com.YourName.TheGameName),你可能需要將TargetIOS版
本設為6(或者未來的最新版本)。除此之外,將所有內容都保持為默認即可,除非您有必須改變它們的理由(特殊設定之類)。
然後回到BuildSettingsWindow並點擊Build,將項目保持到其自身的文件夾中。
此刻,連接你的設備和計算機,打開文件夾並開始XCode項目。你將看到它在XCode中打開。從XCode界面的左上角選擇你的設備,然後點擊Run按鍵。
⑸ unity3d ios 重新編譯 替換哪些
1、在Unity3d中, 創建導出 iOS、Android 項目腳本 PerformBuild.cs ,放在Editor目錄下(必須),如下:
View Code
完成之後在Tools菜單下 會有 測試菜單 ,可以試一下是否可以成功導出項賀山敗目。
2、創建Jenkins配置文件 build.xml 和 參數文件 settings.properties
build.xml 如下:(有其他需求,編輯此文件即可)
View Code
settings.properties 如下: (注意把下面該改成自己項目的改一下)
註:xcode5 去 /Users/<home>/Library/MobileDevice/Provisioning Profiles 目錄找證書GUID
View Code
3、打開Jenkins,按如禪顫下步驟新建一個Job:
3.1、
3.2、找到 構建 -> 增加構建步驟 -> Invoke Ant
3.3、選擇高級
3.4、輸入 build File 路徑 和 Properties 路徑,然後保存job
4、現在就可以點擊 立即構建 開始編譯你的項目了,開始前請先退出Unity3d,否則會報錯。
此外 iOS 需要MAC相關唯盯環境
⑹ Unity打包好的游戲可以反編譯得到源碼和資源嗎
不會的 發布後都是壓縮加密的尤其是數據 涉及到游戲公平的 都會二次加密 資源是在伺服器熱更新得到的 當然 也不是完全不可以 肯定會有大神能破譯 連ios系統都能越獄 何況Unity的工程 我說的只是真對一般人群
⑺ 如何反編譯unityengine
首先從 https://github.com/ata4/disunity/releases 下載 DisUnity v0.3.1
也可以直接用工具下載 https://github.com/ata4/disunity/releases/download/v0.3.1/disunity_v0.3.1.zip
我解壓到了D:\disunity_v0.3.1 這個路徑 大家根據自己的需求來選擇自己的路徑吧
步驟二:確保安裝了 Java JDK 7
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
檢測是否安裝成功 在cmd輸入 java -version 可以列印出版本號 說明應該沒問題了。如果沒有成功這里就不詳細介紹了 問下度娘或者google一下(雖然最近google有些杯具了),請大家見諒。
步驟三:獲取可以破解的源文件 首先我們需要Android的 .apk 或者 IOS的 .ipa 或者網頁游戲的.unity3d 和 .boundle 文件
Android: 先看看 Android 的 apk 安裝包吧,把下好的文件後綴名.apk 直接改成 .rar 解壓到單獨的文件夾 可以反編譯的文件的路徑就在:解壓後的文件夾\assets\bin\Data
IOS: ios的 ipa的安裝包 也是同樣的原理 把.ipa 改成 .rar 然後解壓到單獨的文件夾 可以反編譯的文件的路徑就在: 解壓後的文件夾\Payload\godoflight.app\Data (這里我用的是神之光舉例子 所以是 godoflight.app)
網頁: 這個我們重點講一下
下面我講一下如何提取unity3d做的網頁游戲的資源
首先我們先要下載 火狐瀏覽器 http://www.firefox.com.cn/ 這是官方網站 請大家自行下載吧。
然後安裝 FireBug 插件 上圖了
然後搜索 Firebug 找到後點安裝
安裝成功後這里會有個蟲子的圖標
准備工作完成了,下面我們找一個unity3d開發的網頁游戲 這里我們用 《冰火破壞神》 來舉例,算是給完美做廣告了 雖然他們一定會恨我的(壞笑)。
先登錄游戲,然後打開firebug 如圖 點 [網路] -> [全部] 如果目前網頁中有unity的資源的話 就會在下面的列表裡出現
⑻ 如何防止Unity3D代碼被反編譯
加密原理(無需Unity源碼):
1. IDA Pro打開libmono.so, 修改mono_image_open_from_data_with_name為
mono_image_open_from_data_with_name_0,
2. 替換實現mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...);
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...);
//發現數據文件頭不是DLL前綴則解密 img->raw_data, 相應修改img->raw_data_len
return img;
}
3. 重新打包libmono.so; 替換Unity3D中的android下的版本.
4. 另外寫個加密的工具,植入構建環境(MonoDeveloper或VS,添加一個打包後Build Phase來加密DLL); (IOS下禁用JIT固採用AOT編譯,DLL中沒有邏輯代碼,所以無需操心);
從AndroidManifest.xml中可以看出,騰訊的改造應該是修改並替換了入口的classes.dex,把以前的入口 UnityPlayerProxyActivity替換為com.tencent.tauth.AuthActivity. 然後去載入了自定義的幾個so: libNativeRQD.so. 周全考慮,為了防止第三方委託libmono去做解密而做了防護措施. 具體實現我還沒做深入分析, 應該也是老套路.
libmono.so中的mono_image_open_from_data_with_name也被替換成了mono_image_open_from_data_with_name_0.
解密(android):
方法一: ROOT android系統(最好是一部手機,別搞模擬器,慢死), 掛載LD_PRELOAD的API hook來實現.
方法二: 內存特徵碼提取,簡單高效無敵; 機器能讀,你就能讀;
⑼ ios反編譯unity的assembly-csharp.dll,安卓可以 ipa的為什麼不行
不可以的~U3D可以直接導出APK,但是IOS,先要導出XCODE,然後需要蘋果系統才能生成ipa什麼的。
⑽ 反編譯unity的Assembly-CSharp.dll,安卓可以 IPA的為什麼不行
一:打開騰訊電腦管家,找到工具箱李舉-電腦診所。
二:點擊軟體問題備皮專區仿擾差。
三:在丟失dll文件一鍵修復區,找要修復的dll文件選項。
四:點擊立即修復,便可以恢復正常了