http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=788 []
Ͼ
е ũ ؼ ƴ°?
ũcrack.
μ ؼ ִ. μ?
Ʈ ũ ν ڱ ϴ ̶
ְڴ. ũŷ 迡 ġ ᱹ ũ ǹ̷ ̰ ִ.
ũ ϱؼ ᱹ ñ ؾѴ. ?
reverse
̰. Ȯ ãƺ.
Ͼ ϴ ´´.
Ͼreverse engineering
̶ ؼѴ. ϼǾ мؼ ΰ
Ǵ мϴ , Ͼ̶ ִ.
мϿ 츮 ϴ ϴ ۾ ũ ġ Ǵ ̴.
е No-CD ũ(ġ)̳ Ű(Űʷkey generator)
Ҵ°? ̵ ô.
̷ α ٷ Ͼ ϼ ͵̴.
θ мؾ 츮 ϴ ϵ ƴѰ.
2, 10, 16
ΰ ִ.
Text ϰ Binary . ؽƮ ؽƮ ͷ ִ
̴. ̳ʸ ؽƮ ͷ ȴ.
ϳ . ̴.
ؽƮ ϵ ̳ʸ ̶ ִ.
ᱹ ̰ŵ. sequence of bytes̴.
bytes bytḛ byte 8bit̴. 8bit ?
01000001 ̴. A̴.
bit ̰ ƴϸ ǹϴ ǻͿ ̴ ̴.
bit ǻͿ ̴ ּ ̴. 0ƴϸ 1, yes or no!
忡 A Է غ. ̸ ͷ .
41
̶ ̴. Ʒ .
41 16̴. ̰ 2 ٲٸ, 01000001̴. ̰ A̴.
ؽƮ ϵ, ̳ʸ ϵ ᱹ ο 2 Ǵ ̴.
2 Ư Ŀ ִ ̸ Ģ
ǰ, ؽƮ ״ о ̴.
ƽŰASCII Ҵ°?
ASCII(American Standard Code for information interchange)
ؼڸ ȯ ̱ ǥ ڵ̴.
ƽŰڵ ⺻ 7Ʈ ̷ִ.
A ƽŰڵ忡 1000001 Ǿִ. ̴ Ģ̴.
10 ٲٸ 65 ǰ 16 ٲٸ 41 ȴ.
B 翬 1000010̰?
̷ ڵ ĺ, ڿ Ưڱ ̸ صξ.
ҸϷ ̷ Ҹ ̳ ϰ ?
2 Ծ ڵ ǹϴ ְ
ɾ ǹϴ ִٴ ̴.
16 90 ɾ nop̴.
16 EB ɾ JMP̴.
߿ ſ ״ ܿζ.
̷ ɾ CPU Ǿִ ɾ Ʈ ǹѴ.
ᱹ CPU Ǿִ ɾ 1 1 Ǵ ̴.
̴ CPU ٸ ٸٴ ǹ̴.
̷ CPU Ǿ ִ ɾ ٷ ̰, 2 16
ǥȴ. ̰ ؼϴ ̴
̴.
â α , α ®.
ð ؽƮ ͳ ͷ ̴.
ҸѰ ƴ϶ .
Ӹ ϰ ϱ ϰ ƴ.
̷ ̰, п ſ .
迡 ̴. 谡 ٲ ٲ.
̷ ̴.
ƹư е ˾ƾѴ. װ͵ Intel迭.
.
̶ ߴ. ڴ Ư ǹ̸ .
Ư Ŀ ( ) ְ
ҽ ´ٰ ð ̾߱ߴ.
̰ ־ 츮 ֹ ִٰ ̾߱ ߴ.
е 2, 8, 10, 16 ˾Ƶζ.
( ٲٴ ) ణ ˾ƾѴ.
Ư 2 16, ˾ƺ ϰ 10 Բ ˾Ƶθ .
ǻʹ 2 ٰ ߴ. 2 ˰ ϰ
ڸ, ۵Ѵ. 帥, 帣 ʴ
̷ ΰ ۿ ǥ Ѵ.
yes or no, ̰ Ȥ , 0 ƴϸ 1, ̷ ΰ ۿ ǥ
ϴ ̴. ̷ 2 ̰ binary Ҹ digital̶
Ҹ.
, 0 1 ̷ ƴ϶ 0 F ̴ 16
ִ. ̻Ѱ?
2 ǥϵ ˾ƺⰡ ʴ. űٰ з
ġ ʰ ´.
2 : 010001000011101011010000
10: 4471504
16: 443AD0
̶ з پ ִ° ̴°?
Դٰ 2 16δ ٲ 10δ ٲٱⰡ ƴ.
2ٵ ȿ ٸ 翬 16
?
Ʒ Ʈ ڼ , Ƽδ ʿ
ߴ.
ȸ ¿ Ⱦ⸸ ϱ ߴ.
ϴ ٸ åڳ ͳ , ٸ е Ͼ
ٶ.
ǻ
ǻʹ Էġ, ġ, ġ Ǿִ.
߿ 츮 ˾ƾ ġ̴. ߿ ߽ɿ ִ CPU
ؼ 캸.
߾óġCPU
Central Processing Unit
߾óġ ǻ γ شϴ Էġκ
ؼ ġ ִ Ѵ.
ȮϰԴ ϴ ̴.
츮 CPU CPU װ Ƽ ɿ ´ ۾ Ѵ.
?
̴ ٷ α̴.
α CPU ɵ ü̴.
̷ ο ϳ , , θ
Ѵ. űѰ? űϴ.
4Ģ 길 ۾ Ѵ.
ε ̴. п Ʒ ̴.
𰡸 ϴµ, 翬 𰡰 ʿϴٴ ٵ ̴.
+ δ ƹ͵ Ѵ.
2 + 3̾ ̰, 5 ִ.
̷ + ǹϴ ȣ ڶ ϰ,
2 3 ϴ ̶ Ͽ ǿ(operand) θ.
꿡 ǿڰ ϳ ̻ ؾϴ ̴.
CPU Ϸ ǿڸ Է¹ƾ ϴ ε, 츮
Ӹ CPU ұ?
ǻͿ ణ ƴ ̷ .
, .. ϵũ.
ϵũ ݼ϶.
CPU ӵ δٰ .
ϵũ ź̴. 䳢 ?
ź̸ °?
翬 ̴.
츮ٵ , ſ ӵ ϴ CPU ϵũ
? а ̴.
ƹ 䶰 ̾߱⸦ ش ģ.
CPU ġ ڽŸ ʰ ġ ʿϴ.
ġ ٷ ̴.
(ijö ߴ°? ijô ƴϴ.)
ʹ 꿡 ʿ ̳ , ÷ ̳ ÷
صΰ ̴.
ʿ ؼ ϴ ̴.
Դٰ 굵 ̴.
뵵 зؼ CPU صξ.
е ̰Ϳ ؼ ˾ƾѴ.
е Ƽδ ƴѰ? ڼ Ѿ
.
: EAX, EBX, ECX, EDX
: ESP, EBP
: ESI, EDI, EIP
÷
Ʈ : CS, DS, SS, ES...
Ͱ ̰ ߿ ִ.
General Purpose Registers
16bits Ͱ 2Ʈ 32bits Ѿ鼭 4Ʈ
ư ̸ AX, BX, CX, DX Extended پ.
Ʒ .
ĭ 4bits ̴. ĭ 1byte̴.
* EAX (Accumulator)
ַ , ڷ ¿ ̴ ʹ. ٸ Ϳ
ڷ ӵ .
* EBX (Base)
ַ Ѵ. Ͷ Ҹ Ű ̴.
ϰ ڸ " ּ "̶ ϰڴ.
ڷ ϴ.
* ECX (Count)
ַ ݺ īͷ Ǵ ̴.
ڷ ϴ.
* EDX (Data)
ַ , ڷ Է¿ ̴ ̴.
ABCD ׳ ĺ ٿٰ ߴ ִ°?
.
Stack Registers
* ESP (Stack Pointer)
ÿ Ƶ ڷ ġ ϴ ͷ PUSH
POP ٲ ִ.
ڷᱸ(Ư ) ؼ ̴.
* EBP (Base Pointer)
ּҸ ϴ ͷ ٸ Ϳ Բ
ȴ.
Pointer Registers
Ư ּҸ ų ϴ ͷ ʴ´.
* ESI (Source Index)
ַ ּ Ǹ ڷḦ о ּҸ ⸮Ű
ȴ.
* EDI (Destination Index)
ַ ּ Ǹ ڷḦ ּҸ
Ű ȴ.
* EIP (Instruction Pointer)
ʹ ϰ ɾ ִ ġ
Ű ̴.
÷
Flag Registers
÷ ʹ ɾ ϴ ͷ Ƿ
.
б , ڸ ø ǥ ֱ ÷
ʹ ߿ Ͷ ִ.
* ÷
0 - Carry: ڸ ø, ϴ ÷
1 - 1
2 - Parity : 8Ʈ 1 Ǿ ִ Ʈ ¦
̸ Ʈ
3 - 0
4 - Auxiliary carry, ij ÷
5 - 0
6 - Zero : 0̸ Ʈ
7 - Sign : ȣ ִ 꿡 Ʈ
8 - Trap : ϳ INT 01h
9 - Interrupt: ͷƮ ɸ . ƮǸ ͷƮ
A - Direction: ڿ ɾ Ǵ ÷, ƮǸ SI, DI
. ڿ ̵ ̳
B - Overflow : Ϳ ǥ ŭ Ŭ Ʈ
CD - IOPL: ۰
E - NT : 386 ߰ Nested Task Flag
F - 0
10 - Resume: 386 ߰ Resume Flag
11 - VM: 386 ߰ Virtual Mode Flag
Ʈ
Segment Registers
Ʈ ϴ ͷ Ʈ, Ʈ
ϰ ִ ̴.
* CS (Code Segment)
α ɾ ۵Ǵ Ű
* DS (Data Segment)
Ʈ Ű . , ڷᰡ Ǿ ִ ġ
Ų.
* SS (Stack Segment)
Ʈ ġ Ű ̴.
* ES (Extra Segment)
Ʈ ġ Ű ڿ ɾ DZ Ѵ.
ٺ Ʈ ߴ. Ʈ ¿ ؼ ߿ġ
׳ Ѿ.
⺻ ɾ
¿ 2 address ɾ ߽ Ѵ.
ɾ ̷ ִ.
[opcode] [destination operand], [source operand]
[ɾ] [ ۷], [ҽ ۷]
* PUSH: SP ϴ ɾ ϳ ÿ Ѵ.
push
push eax; eax ÿ ִ´.
push 20 ; 20 ÿ ִ´.
push 40203F ; ּ 40203F ÿ ִ´.
* POP: SP ϴ ɾ .
pop
pop eax ; ÿ eax Ϳ .
* MOV: ű δ.
move
mov eax,ebx; ebx eax ű.
mov eax,20 ; 20 eax ű.
mov eax,dword ptr [40203F] ; ּ 40203F eax ű.
* LEA: ۷ ҽ ۷ .
load effective address
lea eax,ebx; eax ebx .
* INC: 1 Ų.
increase
inc eax; eax 1 Ų.
* DEC: 1 Ų.
decrease
dec eax; eax 1 Ų.
* ADD: ̳ δ.
add
add eax,ebx; eax = eax + ebx
add eax,20 ; eax = eax + 20
add eax,dword ptr [40203F] ; eax = eax + 40203F
* SUB: ̳ δ.
subtract
sub eax,ebx; eax = eax - ebx
sub eax,20 ; eax = eax - 20
sub eax,dword ptr [40203F] ; eax = eax - 40203F
* NOP: ƹ ͵ ʴ´.
no operation
* CALL: ν(procedure) ȣ δ.
call
call dword ptr [40203F]; ּ 40203F ȣѴ.
* RET, RETN: ȣ ư.
return
* CMP: Ȥ Ϳ Ѵ.
compare
cmp eax,ebx; eax ebx Ѵ.
cmp eax,20 ; eax 20 Ѵ.
cmp eax,dword ptr [40203F] ; eax 40203F Ѵ.
* JMP: Ư ġ Ѵ.
unconditional jump
jmp dword ptr [40203F] ; ּ 40203F Ѵ.
Ǻ : CMP TEST
* JE: CMP TEST ٸ
jump if equal
* JNE: CMP TEST ʴٸ
jump if not equal
* JZ: 0 ̶
jump if zero
* JNZ: 0 ƴ϶
jump if not zero
* JL:
jump if less; signed
* JNL: (ũų )
jump if not less; signed
* JB:
jump if below; unsigned
* JNB: (ũų )
jump if not below; unsigned
* JG: ũ
jump if greater
* JNG: ũ (۰ų )
jump if not greater
* JLE: ۰ų
jump if less or equal; signed
* JGE: ũų
jump if greater or equal
꿡 , ̴ and, or, not, xor, text
ٷ絵 ϰڴ.
* AND: Ǵ Ʈ 1̸ 1, 0
ǥ ˾Ƶζ.
A B &
-----
0 0 0
0 1 0
1 0 0
1 1 1
mov eax,10
and eax,8
eax ,
1010 & 1000 = 1000
8̴.
* OR: Ǵ Ʈ ϳ 1̸ 1, 0̸ 0
A B |
-----
0 0 0
0 1 1
1 0 1
1 1 1
* XOR: Ǵ Ʈ ٸ 1, 0
A B ^
-----
0 0 0
0 1 1
1 0 1
1 1 0
* NOT: Ʈ Ų.
A !
---
0 1
1 0
mov eax,8
not eax
eax ,
1000 Ų 0111̹Ƿ 7̴.
* TEST: ۷忡 ġ ʰ ÷ ƮŲ.
е Ƽδ ?
ð αְ 뿡 ؼ ̴.
߿ϴ.. OTL
Ʈ
dual5651 Ȩ
CRACK, Ŀ 2000, Sky Hacker, Debugging Shock ()
Computer Organization & Architecture : designing for performance - 6th ed, Pearson Education Inc 2003, William Stallings
|
Hit : 10193 Date : 2007/08/25 12:51
|