前言
HTB 訂閱到期ㄌ,窮困潦倒所以暫時停更
先打預防針:這系列只會講很簡單的東西,內容也可能會有錯誤
希望可以拋磚引玉看到更多人分享自己學的東東,不要再內捲偷藏招了XD
如果你對 Unity 逆向有興趣的話就看下去吧 >.0
一個 Unity App 裡面都有些啥
條件允許的話建議還是動手做做看,印象會比較深
這邊就拿我高一的物理作業 當例子,來看看一個 Unity App 裡面有哪些東西
總之大概有這些東西:
- Scenes(場景)
- GameObjects:Scene 裡的物體,Player、Camera 等
- Assets:C# script、圖片、模型、材質、Prefab 等
Scene
一個 Unity App 可能會有很多個場景,這個專案只有一個 Sample Scene
Scene 底下會有 GameObject,也就是使用者透過 Camera 可以看到的東西
Canvas 存放的是跟 UI 有關的 GameObject
GameObject
GameObject 底下則是可以有各種 Component
- Transform:位置/旋轉/大小
- Collider:碰撞體,會和其他 Collider 發生碰撞
- Rigidbody:鋼體,代表這個 GameObject 可以受到力量作用
- Script
Assets
各種東西都在這
Script
這邊來看 Ball 這個 Script
public class ball : MonoBehaviour
{
public GameObject self;
float timer;
bool Grounded;
void Start()
{
Instantiate(self);
}
void FixedUpdate()
{
timer += Time.deltaTime;
if(timer >= 0.4f && !Grounded)
{
timer = 0;
Instantiate(self,transform.position,transform.rotation);
}
}
private void OnCollisionEnter(Collision collision)
{
Grounded = true;
}
}
Start():Scene 的第一幀會執行 Start()
Update() / FixedUpdate():開始後每一幀都會執行 Update(),FixedUpdate 解釋起來會比較複雜,可以簡單理解成每秒會執行很多次就好
Instantiate():生成 GameObject
OnCollision/OnTrigger 系列:發生碰撞時會呼叫的 Function,呼叫時機會因後綴不同而有所不同
看完 Script 就可以知道這個 Ball 大概在幹嘛
—> 開始時生成一次叫做 self 的 GameObject,之後在落地前每隔 0.4 秒生成一次
其他你要知道的事
Mono V.S. IL2CPP
開發完成後需要 Build
接下來講講 Unity 的兩種 Build 方法: Mono、IL2CPP
廢話就不講了,簡單講就是 Mono Build 可以直接用 DnSpy 一刀殺進去,而 IL2CPP 不行
具體來說怎麼用 DnSpy 反編譯就是下一篇的內容了
不過預設選項是 Mono,所以看到是 Unity 就可以 DnSpy 啟動了
CheatEngine
配著用有奇效,但如果用 CE 就能輕易解決的事就不需要搞些花里胡哨的
後記
下篇會是如何反編譯 Mono/IL2CPP Build
AssetStudio 查看 Assets
AssetStudio 可以拿來拆音訊圖片等等的,特定情況可能會需要
Load 遊戲資料夾
不過這個 App 沒什麼能拆,就拿預設的東西當例子
在 Assets List 就可以預覽,右鍵可以導出