You are on page 1of 13

Lý thuyết 2

Reverse engineering
What Is Reverse Engineering?
Phân tích mã nguồn của các phần mềm
hoặc các tập tin nhị phân để hiểu cách chúng hoạt động
và có thể sửa đổi chúng.
x

01
Number and Logical Operation in
Computer
Numeral Systems

Base 10: 23
Base 2: 10111b
Base 16: 17h

Why base 16?


Binary Operations

not 10111 = ?
10111 xor 00111 = ?
10111 and 00111 = ?
10111 or 00111 = ?
02
404 NOT
FOUND

101 ASM
Registers – Instructions - Flags
Registers – Thanh ghi
● RAX EAX AX AH AL – accumulator.
● RBX EBX BX BH BL – base.
● RCX ECX CX CH CL – counter.
● RDX EDX DX DH DL – data.
● RSI ESI SI - source index
● RDI EDI DI - destination index
● RSP ESP SP - stack pointer.
● RBP EBP BP - base pointer.
● R8 R8D R8W R8B (R8 to R15) – extra register.
Instructions – Chỉ thị

● Data Movement: MOV, LEA, PUSH, POP


● Arithmetic: INC, DEC, ADD, SUB, MUL, DIV,
IMUL, IDIV
● Flow Control: RET, CMP, JCC (JNE, JLE, JNZ,…)
Flag – Cờ
● Zero Flag (ZF) - bằng 1 nếu phép toán là không,
0 nếu khác không.
● Carry Flag (CF) - chứa giá trị nhớ hoặc lưu giá
trị cuối của phép dịch/quay bit.
● Overflow Flag (OF) - bằng 1 khi kết quả của
phép toán có dấu lớn hơn so với kích thước của
địa chỉ đích.
● Sign Flag (SF) - bằng 1 nếu kết quả của phép
toán số học là một giá trị âm.
● Adjust/Auxiliary Flag (AF) - Giống như CF nhưng
cho các phép toán Binary Coded Decimal (BCD).
● Parity Flag (PF) - bằng 1 nếu 8-bit cuối có số
bit 1 là số lẻ và bằng 0 khi chẵn.
● Trap Flag (TF) - Cho phép thực hiện từng bước
các chương trình.
Calling convention - quy ước gọi hàm
Source C (x86)

Windows Linux
Calling convention - quy ước gọi hàm
Source C (x64)

Windows Linux
Calling convention - quy ước gọi hàm
Windows x64 Calling Convention Linux x64 Calling Convention
03
IDA Pro
https://github.com/zxcat14/ida-pro/releases

You might also like