Network & Information Security

Reverse

Introduction

程式怎麼產生?-?

寫的code

組合語言

object code

exe

compiler

assembler

linker

decompiler

(僅邏輯一樣)

disassembler

(完整還原)

程式怎麼運作?-?

丟給O(rz)S處理

怎麼放到記憶體、進入點...

VA? PA? RVA?

entry point = RVA + imagebase

ASLR?

Tools

Ghidra

gdb

PE-Bear

x64dbg

當你有source code...

裝完Ghidra可以來寫寫

一些基本操作

example.exe

G 要去的記憶體位置

alt 左鍵 回上個函式

L 函式改名

找字串 search->for string

...

BabyAssembly

在DC :P

練習

x86組合語言

x64dbg

組合語言

暫存器

資料視窗

stack

Ghidra

組合語言

反編譯

一些指令

mov

add

sub

mul

div

call

ret

jmp

...

mov 目的地,來源

ex: mov rax(暫存器),0

if

cmp

je / jne

jz / jnz

jge / jle

for

有往回跳的if

array / struct

mov dword ptr[暫存器+0x20],0x1

全域變數 / 區域變數

直接寫到記憶體 / 用暫存器相對去存

分析?

動態分析

靜態分析

直接跑起來

人腦CPU

x64dbg

Ghidra

題目

CTF 04

By richardliang