|
|
|
@ -78,7 +78,28 @@ void LoopDemo()
|
|
|
|
|
This c++ function, compiled by clang-cl with `mcmodel=large`, will generate a routine with the following instructions:
|
|
|
|
|
|
|
|
|
|
```nasm
|
|
|
|
|
|
|
|
|
|
0x58 ; void LoopDemo(void)
|
|
|
|
|
0x58 public ?LoopDemo@@YAXXZ
|
|
|
|
|
0x58 ?LoopDemo@@YAXXZ proc near
|
|
|
|
|
0x58 var_4 = dword ptr -4
|
|
|
|
|
0x58
|
|
|
|
|
0x58 48 83 EC 28 sub rsp, 28h
|
|
|
|
|
0x5C C7 44 24 24 00 00 00 00 mov [rsp+28h+var_4], 0
|
|
|
|
|
0x64 loc_64:
|
|
|
|
|
0x64 83 7C 24 24 0A cmp [rsp+28h+var_4], 0Ah
|
|
|
|
|
0x69 0F 83 2A 00 00 00 jnb loc_99
|
|
|
|
|
0x6F 8B 54 24 24 mov edx, [rsp+28h+var_4]
|
|
|
|
|
0x73 48 B9 60 01 00 00 00 00 00 00 mov rcx, offset ??_C@_0BB@HGKDPLMC@?$.... ; "> Loop Demo: %d\n"
|
|
|
|
|
0x7D 48 B8 38 02 00 00 00 00 00 00 mov rax, offset DbgPrint
|
|
|
|
|
0x87 FF D0 call rax ; DbgPrint
|
|
|
|
|
0x89 8B 44 24 24 mov eax, [rsp+28h+var_4]
|
|
|
|
|
0x8D 83 C0 01 add eax, 1
|
|
|
|
|
0x90 89 44 24 24 mov [rsp+28h+var_4], eax
|
|
|
|
|
0x94 E9 CB FF FF FF jmp loc_64
|
|
|
|
|
0x99 loc_99:
|
|
|
|
|
0x99 48 83 C4 28 add rsp, 28h
|
|
|
|
|
0x9D C3 retn
|
|
|
|
|
0x9D ?LoopDemo@@YAXXZ endp
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# Obfuscation
|
|
|
|
|