Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introducing Reverse Engineering @ YZU CS250
Search
racterub
June 15, 2020
Programming
240
0
Share
Introducing Reverse Engineering @ YZU CS250
Introducing Reverse Engineering @ YZU CS250
racterub
June 15, 2020
More Decks by racterub
See All by racterub
IM620 Web Security
racterub
0
150
ITAC | Websec 3
racterub
0
250
ITAC | Websec 2
racterub
0
220
ITAC | Websec 1
racterub
0
260
ITAC | Linux Basics
racterub
0
130
ITAC | Jinja & Bootstrap
racterub
1
120
ITAC | Flask - Basic Flask
racterub
1
110
ITAC-Flask | Environment setup
racterub
1
98
Other Decks in Programming
See All in Programming
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.7k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.1k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
7
2.4k
[BalkanRuby 2026] Drop your app/services!
palkan
3
690
New "Type" system on PicoRuby
pocke
1
190
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
400
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
380
誰も頼んでない機能を出荷した話
zekutax
0
140
分析エージェント精度向上における データアナリストの役割
oura_shoya
0
120
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
5
690
GitHub Copilot CLIのいいところ
htkym
2
1.1k
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
330
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Site-Speed That Sticks
csswizardry
13
1.2k
Leo the Paperboy
mayatellez
7
1.8k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Code Reviewing Like a Champion
maltzj
528
40k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Agile that works and the tools we love
rasmusluckow
331
21k
Unsuck your backbone
ammeep
672
58k
30 Presentation Tips
portentint
PRO
1
300
Transcript
Introducing Reverse Engineering Racterub @ YZU CS250 1
About me • 元智 電機通訊學院英語學⼠班 ⼤⼀ • ⽬前主要玩的領域是資安 • 去年混分拿到了⺠⽣物聯網漏洞挖掘競賽第⼆期第三名
2
https://ppt.cc/f8C9Gx 有電腦的可以載⼀下 今天會有 lab 讓你們試試
工具包 • IDA Free 資料夾裡⾯選你的系統安裝就好了 Linux MacOS Windows
逆向? 你們熟悉的應該是 5
None
軟體逆向通常是夠過透 過組語來了解一支程式 的運行方式 7
今天有一題小 lab 這邊會先教一點 AMD64(x86-64) 的 東⻄ 8
X64 calling convention •這裡講的是 AMD64 不是 Intel 64 •Function 的參數是以這樣的順序排的
•RDI, RSI, RDX, RCX, R8, R9 •所以 function(123, 456) 時 •RDI => 123 •RSI => 456 9
Registers •R[A-D]X, RSI, RDI => 8 bytes •E[A-D]X, ESI, EDI
=> 4 bytes •[A-D]X, SI, DI => 2 bytes •AX -> AH AL => 1 bytes •RBP -> stack 底部 •RSP -> stack 頂部
Registers • RAX -> 0x1234567890abcdef • EAX -> 0x90abcdef •
AX -> 0xcdef • AH -> 0xcd • AL -> 0xef RAX = 0x1234 5678 90ab cdef 11
⼀個古老的例⼦ •++i v.s. i++ •在古老的時代,事實上 ++i 的效能會比較好 •這是由逆向程式後觀察組語發現的特性 •不過現在 MSVC
跟 glibc 大概都優化到差不多了 •(要調高優化) 12
#include <stdio.h> int main(int argc, char *argv[]) { int i=0;
printf("Original i: %d\n", i); printf("i++: %d\n", i++); printf("++i: %d\n", ++i); return 0; } 13
▲Compiled on Ubuntu 18.04 with GCC * gcc -no-pie test.c
-o test -g * (預設優化為 -O1) 14
逆向入門 15
逆向 • 硬體 ▲ Firmware analysis @ AIS3 2019 16
逆向 • 軟體 ▲IDA Pro 分析 x64 binary
C/C++ 的逆向? 18
C/C++ Reversing •當你將一隻由 C/C++ 撰寫得程式編譯之後不論你是 object file 還是 binary ,都可以拿來逆向
•通常不同平台、不同編譯器產出來的東⻄都不太一樣 •但是透過 disassembler/debugger 還是可以正常了解程式 的流程跟邏輯 19
C/C++ Reversing •動態分析 •GDB 20
C/C++ •靜態分析 •objdump 直接嗑組語 •IDA Pro, Ghidra, Radare2 •IDA Pro
是付費的,但是有出免費版 IDA Free 21
None
23
Lab 24
https://ppt.cc/fttGHx 只需要對 demo_linux 逆向就好 25
其他語言的逆向 26
其他語⾔的逆向 • Python • Python 有⼀個功能是可以將 py 檔編譯檔 • 使⽤
uncompyle6 就可以把編譯檔還原出程式碼 • 雖然有時候會爛掉 27
其他語⾔的逆向 • Java • 透過 JAD 或是 JD-GUI 反編譯 ▲JD-GUI
反編譯的樣子
逆向可以幹嘛? 29
當你組員寫出了一個壞掉的程式作 業,然後程式碼也被刪掉了 那就逆向硬幹 30
當你組員寫出了一個壞掉的程式作 業,然後程式碼也被刪掉了 那就逆向硬幹 不過我猜這個情境發生的機率大概不高辣 31
▲https://github.com/Inndy/garena-authenticator ▲https://github.com/Inndy/twnhi-smartcard-agent 32
▲https://github.com/x43x61x69/Easy-Card 33
▲https://github.com/x43x61x69/Easy-Card/blob/ 8f981ff718480d5a67b7afdec9324559685607cb/bin/easycard.py 34
35
36
37
▲WannaCry 38
▲IDA Pro 分析 WannaCry 39
▲上一張組語轉成偽代碼的部分 40
Magisk Cydia 41 ▲越獄 / Root 所需要的漏洞也是由逆向而來的
逆向就是要了解程式碼 跟組合語言之間關係 42
要知道你的 code 編譯會⻑怎 樣,也要知道組合語言的邏 輯合起來會等同於什麼 code 43
跟你寫程式一樣,你寫 code 就要知道你的 code 運作的方式
QA? 45
https://ppt.cc/f7FKFx 46