어셈 복습 Decimal to Binary

2021. 7. 7. 21:520x02 Reverse Engineer/0x03. Etc

728x90

밥먹고 오픈채팅에서 누가 짜달라해서 짜봤다. 오랜만에 어셈쓰니 재밌었다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define Naked __declspec(naked)
const char* format = "%d";
const char* format2 = "%c";
unsigned int n = 0;
Naked int main(int argc, char* argv[])
{
__asm {
  push ebp
  mov ebp, esp
  sub esp, 0x30
  // initialization 
  xor ecx, ecx
  xor eax, eax 
  lea eax, [n]
  push eax
  push format
  call scanf // stdin.get 
  add esp, 0x8
  
  mov eax,dword ptr [n] // return input value
  mov edx, eax // backup
  mov ecx, 0x7 // loop count 

  _loop:
  // trigger 
  push edx // backup
  sar edx, cl
  and edx, 0x1
  cmp edx, 0x1
  jl _print_zero
    
    push ecx
    mov edx, 0x31 // '1'
    push edx
    push format2
    call printf
    add esp, 0x8
    pop ecx
    pop edx
    sub ecx, 0x1
    cmp ecx, 0xFFFFFFFF
	je _end
	jmp _loop
_print_zero:
  mov edx, 0x30 // '0'
  push ecx // backup
  push edx
  push format2
  call printf
  add esp, 0x8
  pop ecx
  sub ecx, 0x1
  pop edx
jmp _loop

_end:
  mov esp, ebp
  pop ebp
  retn
}
}

'0x02 Reverse Engineer > 0x03. Etc' 카테고리의 다른 글

HackCTF keygen  (0) 2022.03.14
HackCTF babymips  (0) 2022.03.14
Credential leak from Chrome browser [MacOS Version]  (0) 2021.06.27
[HTB] Bombs Landed  (0) 2021.03.24
CRACKME constant ver 01 write up  (0) 2020.07.04