:00000000 C705E1C74B0068200340 mov dword ptr [004BC7E1],
40032068
:0000000A 66C705E5C74B0000C3 mov word ptr [004BC7E5],
C300
:00000013 68E6FA4900
push 0049FAE6
:00000018 C3
ret
把程式的某個地方改成跳去執行我們的程式碼
然後返回程式oep執行。
:00000019 00000000000000 BYTE 7 DUP(0)
:00000020 B30A
mov bl, 0A
:00000022 A0207F5300
mov al, byte ptr [00537F20]
:00000027 8A3D217F5300
mov bh, byte ptr [00537F21]
:0000002D
E851000000 call 00000083
:00000032 8844240A mov
byte ptr [esp+0A], al
取記憶體中的2個字元,轉成數值,然後放到[esp+0A]
:00000036 A0237F5300
mov al, byte ptr [00537F23]
:0000003B
8A3D247F5300 mov bh, byte ptr [00537F24]
:00000041 E83D000000 call
00000083
:00000046 88442406
mov byte ptr [esp+06], al
:0000004A A0267F5300
mov al, byte ptr [00537F26]
:0000004F 8A3D277F5300
mov bh, byte ptr [00537F27]
:00000055
E829000000 call 00000083
:0000005A 6605D007 add
ax, 07D0
:0000005E 6689442404
mov word ptr [esp+04], ax
:00000063 66B8002C
mov ax, 2C00
:00000067 6633DB
xor bx, bx
把暫存器的內容改成執行我們的程式碼前的樣子
:0000006A
C705E1C74B00668B4C24 mov dword ptr [004BC7E1], 244C8B66
:00000074
66C705E5C74B000A66 mov word ptr [004BC7E5], 660A
把一開始修改過的程式碼改回原樣,否則會出錯。
:0000007D 68E1C74B00 push
004BC7E1
:00000082 C3
ret
:00000083 2C30
sub al, 30
:00000085 80EF30
sub bh, 30
:00000088
F6E3 mul
bl
:0000008A 00F8
add al, bh
:0000008C C3
ret