<!-- .slide: data-background="" -->
# 資研社社課 week-2
#### 逆向工程 入門
---
### 廣告時間
----
### 國雲網路
我們很多機器都是透過他們的vps架設的

---
### 免責聲明
:::info
自本社團活動中所學習的工具、弱點、攻擊手法等僅供資安知識的學習,若在課程後想做相關練習,請在合法的CTF平台上進行測試。
如對外有相關攻擊行為,皆與授課講師以及實驗中學資訊研究社無關。
:::
不要去犯法喔><
---
# What is reverse?
----

----
去理解程式在幹嘛的過程。
----

---
# 常見使用場景
----
- 電腦病毒分析
- 遊戲外掛
- 越獄(Jail Break)
- 漏洞尋找(變成白箱)
---
從0.1開始的C/C++複習
----
希望你們都還記得 :D
電腦課都有所以我就複習一下就好(?)
----
- 變數類型:
- int : 整數值,4 bytes
- char : ASCII字元,1 byte
- float : 浮點數,4bytes
- long long(LL) : 大整數,8 bytes
- bool : 1 bit
----
- 運算元
- \+-*\/ : 加減乘除
- | : OR 運算(0|0 = 0,其他都是 1)
- & : AND 運算(1&1 = 1,其他都是 0)
- ^ : XOR 運算(1^1 和 0^0 是 0,其他都是 1)
- \>\> : x>>n=$x/2^n$
- << : x<<n=$x*2^n$
----
**位元運算EXAMPLE**
5=$101_{(2)}$
6=$110_{(2)}$
5|6=$111_{(2)}$=6
5&6=$100_{(2)}$=4
5^6=$011_{(2)}$=3
----
- 輸入
- get(meow)
- read(wolf)
- scanf(womp)
- cin >> shark
- std:\:istream::operator>>whale
----
- 輸出
- put(meow)
- write(wolf)
- printf(womp)
- cout << shark
- std:\:ostream::operator<\<whale
----
- Array(陣列)
```cpp
int a[7]={1, 3, 5, 7, 9, 11, 13}
// a[0]=1, a[1]=3
```
----
### for迴圈
```cpp
for(int i=0;i<10;i++){
cout << i << '\n';
}
```
變數i從0跑到9
----
### 函數
```cpp
int eat(int shark){
int whale=shark^1;
return whale;
}
```
會有個input跟一個return的值
----
複習完成owo
如果逆向的時候遇到奇怪的東西
:bulb: 跑跑看就對了
---
### 電腦怎麼跑執行檔的?
----
執行檔裡面本身是一個一個byte的資料:

----
每個(或多個)byte可以組成一個指令/寄存器
也可以是一個值
----
**EXAMPLE**
一個被打開的執行檔
(ghidra視角)

----
**電腦視角**
:::info
執行檔被跑->
讀取資料,轉為處理器看得懂的machine code->
照著他們執行
:::
----
所以...
簡單啊~讀那些byte就好(X)

---
### 處理工具?!
---
strace 介紹
----
~~我不打算講~~,在你們的kali linux上面應該有,他會去追執行檔跟電腦互動過程的一些記憶體/變數內容
----
解題平台上面的 Invisible 作法:
```bash
strace -s 1000 ./invisible
```
---
### IDA-使用教學
----
點這個

----
旁邊這列可以選函數

----
在這個區域按下 f5 可以看到逆回去c的結果

----
縮小畫面看函數之間執行過程

----
按右鍵可以變更模式

----
text模式可以知道函數地址

---
實戰
----
https://ctf.nicewhite.xyz/
----
REVERSE

----
今天會帶Passme,Adder和Passme Revenge也是可做的
---
如果有空的話會講ghidra
---
3Q

{"description":"我們很多機器都是透過他們的vps架設的image","title":"資研社社課 week-2 逆向工程","contributors":"[{\"id\":\"4aa04276-c8ec-490d-a620-ec3b4e8e3d7c\",\"add\":3135,\"del\":141}]"}