Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Reverse 0x2 阿是怎樣逆 YJK @ HackerSir 12/13
Slide 2
Slide 2 text
How to use GDB Outline 01 02 03 Dynamic Analysis Other Language Reverse
Slide 3
Slide 3 text
Dynamic Analysis
Slide 4
Slide 4 text
Dynamic Analysis • 將程式執行觀察程式行為並分析 • 建議在虛擬環境
Slide 5
Slide 5 text
Why Dynamic Analysis • 如果執行完某個函式發現有些數值變化,代表有可能是關鍵 • 可以透過 debugger 跳過或繞過某些部分,甚至跳到重點 • 設定中斷點,觀察暫存器、記憶體 • 動態修改數值,使數值成立 • 用工具紀錄程式行為
Slide 6
Slide 6 text
Dynamic Analysis Tool GDB • GNU Debugger • 互動式的 shell • CLI x64dbg • For Windows • GUI • x32dbg WinDbg • 微軟開發 • 對 Windows 相容性較高 • GUI
Slide 7
Slide 7 text
上週內容補充
Slide 8
Slide 8 text
Why strace • 追蹤 system call 和 signal • ls command 是如何實現
Slide 9
Slide 9 text
Why ltrace • 追蹤使用函式庫 • ls command 是如何實現
Slide 10
Slide 10 text
Practice • static or dynamic
Slide 11
Slide 11 text
GDB
Slide 12
Slide 12 text
GDB • GNU Debugger • GNU 系統中的標準除錯器 • 許多類 UNIX 系統都可以使用 • 支援許多語言,包括 C、C++ 等
Slide 13
Slide 13 text
GDB Plugin • peda • pwndbg • gdbgui • gef
Slide 14
Slide 14 text
How to use GDB • gdb ./[執行檔] • 會發現 gdb 開始執行你的程式
Slide 15
Slide 15 text
GDB - run • 執行程式 • run、r
Slide 16
Slide 16 text
GDB - breakpoints • 設定中斷點,可以是函式、記憶體位置、行數 • break [中斷點]、b [中斷點] • ex: b main
Slide 17
Slide 17 text
GDB - continue • 程式中斷後再執行 • continue、c
Slide 18
Slide 18 text
GDB - backtrace • 追蹤 stack 的狀態 • backtrace、bt
Slide 19
Slide 19 text
GDB - disassemble • 反組譯執行的程式 • disas
Slide 20
Slide 20 text
GDB - next instruction • 下一步指令 • ni
Slide 21
Slide 21 text
GDB - step instruction • 下一步指令 • si
Slide 22
Slide 22 text
GDB - si vs ni • 遇到函式的操作 • ni 會將函式直接執行 • si 會跳進函式 si ni
Slide 23
Slide 23 text
GDB - finish • 結束函式 • finish、fini
Slide 24
Slide 24 text
GDB - information • 顯示暫存器、函式、中斷點...資訊 • info functions、breakpoints
Slide 25
Slide 25 text
GDB - Examine • 列出記憶體資訊 • x $rax、x 0x7fffffffd9b8
Slide 26
Slide 26 text
GDB - Examine • 特定格式將記憶體印出 • x/
• fmt = count + size + format • ex: x/2gx $rax • size: b (byte)、h (halfword)、w (word)、g (giant, 8 bytes) • format: x (hex)、d (decimal)、c (char)、s (string)…
Slide 27
Slide 27 text
GDB - Examine
Slide 28
Slide 28 text
GDB - Delete • 刪除中斷點 • delete、del、d 刪除全部 • delete、del、d 刪除特定中斷點
Slide 29
Slide 29 text
GDB - jump • 直接讓指令跳轉到指定位址 • jump LOCATION • jump read_flag、jump *0x00000000080015c2
Slide 30
Slide 30 text
GDB - help • 查看有什麼參數 • help、help <指令>
Slide 31
Slide 31 text
初步使用 GDB • 先將程式執行 • b main • r • 後面再看該怎麼做
Slide 32
Slide 32 text
Practice • GDB
Slide 33
Slide 33 text
Java Reverse
Slide 34
Slide 34 text
Bytecode • 像是 x86、ARM 一樣的指令格式 • 一種中間語言 • 只需要編譯一次,如果有相對應的 VM 就可以執行 (ex: JVM) • 比前面的 asm 相對好逆向
Slide 35
Slide 35 text
Operation code • Opcode、instruction code • 與 asm 中的 mov、lea… 類似
Slide 36
Slide 36 text
Operation code • ldc: 將常數載入到 stack 上 • astore_1: 將資料儲存到區域變數索引值 = 1 的位置 • aload_1: 將區域變數索引值 = 1 的資料載入到 stack 上
Slide 37
Slide 37 text
Virtual Machine?
Slide 38
Slide 38 text
Virtual Machine?
Slide 39
Slide 39 text
Virtual Machine?
Slide 40
Slide 40 text
Virtual Machine System Virtual Machine • 完整系統 (ex: Ubuntu、kali、Windows) • Hypervisor • ex: VMWare、VirtualBox Process Virtual Machine • 專門提供給特定架構 • 環境提供執行某個特定架構的程式 • ex: JVM (Java Virtual Machine)
Slide 41
Slide 41 text
Java • 編譯成 bytecode 形式 • 在 JVM 上執行 • 只要有對應的環境就可以執行
Slide 42
Slide 42 text
How Java Works? source code (.java) Java Compiler (javac) Java ByteCode (.class) JVM JVM Windows Linux
Slide 43
Slide 43 text
How to compile and run
Slide 44
Slide 44 text
Java disassemble • 安裝好 JDK 後有個指令 javap • javap • Options: -c Disassemble the code • javap –c main
Slide 45
Slide 45 text
Java decompile • JD-GUI • Procyon • CFR • JD-Core • Jadx • Fernflower • JAD • Online-tool
Slide 46
Slide 46 text
Decompile .jar or .class • 選擇一個 .class 或是 .jar • 底下選項不用特地改變 • 上傳並反編譯
Slide 47
Slide 47 text
How to solve and get flag • 靜態分析 • 修改程式碼 • Online-tool
Slide 48
Slide 48 text
Practice • BAD FLAG CHECKER
Slide 49
Slide 49 text
Bonus
Slide 50
Slide 50 text
.NET • 跨平台、免費、open source
Slide 51
Slide 51 text
.NET Decompile • dnSpy • Debugger & decompiler • 可以靜態分析也可以動態分析
Slide 52
Slide 52 text
更多題目 • picoCTF • Hackme CTF
Slide 53
Slide 53 text
No content