Flydragon's Blog
687 words
3 minutes
Unity 逆向入門第一篇:開發一個 Unity App

visitor badge

前言#

HTB 訂閱到期ㄌ,窮困潦倒所以暫時停更

先打預防針:這系列只會講很簡單的東西,內容也可能會有錯誤
希望可以拋磚引玉看到更多人分享自己學的東東,不要再內捲偷藏招了XD
如果你對 Unity 逆向有興趣的話就看下去吧 >.0

一個 Unity App 裡面都有些啥#

條件允許的話建議還是動手做做看,印象會比較深

這邊就拿我高一的物理作業 當例子,來看看一個 Unity App 裡面有哪些東西

總之大概有這些東西:

  1. Scenes(場景)
  2. GameObjects:Scene 裡的物體,Player、Camera 等
  3. Assets:C# script、圖片、模型、材質、Prefab 等

img

Scene#

一個 Unity App 可能會有很多個場景,這個專案只有一個 Sample Scene
img

Scene 底下會有 GameObject,也就是使用者透過 Camera 可以看到的東西
Canvas 存放的是跟 UI 有關的 GameObject alt text

GameObject#

GameObject 底下則是可以有各種 Component

  • Transform:位置/旋轉/大小
  • Collider:碰撞體,會和其他 Collider 發生碰撞
  • Rigidbody:鋼體,代表這個 GameObject 可以受到力量作用
  • Script alt text

Assets#

各種東西都在這

alt text

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;    
    }
}
  1. Start():Scene 的第一幀會執行 Start()

  2. Update() / FixedUpdate():開始後每一幀都會執行 Update(),FixedUpdate 解釋起來會比較複雜,可以簡單理解成每秒會執行很多次就好

  3. Instantiate():生成 GameObject

  4. 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 啟動了 alt text

CheatEngine#

配著用有奇效,但如果用 CE 就能輕易解決的事就不需要搞些花里胡哨的

後記#

下篇會是如何反編譯 Mono/IL2CPP Build

AssetStudio 查看 Assets#

AssetStudio 可以拿來拆音訊圖片等等的,特定情況可能會需要

Load 遊戲資料夾 alt text

不過這個 App 沒什麼能拆,就拿預設的東西當例子
在 Assets List 就可以預覽,右鍵可以導出
alt text

Unity 逆向入門第一篇:開發一個 Unity App
https://flydragonw.github.io/posts/unity_reverse_1/
Author
FlyDragon
Published at
2024-07-23