개요
어셈블리에서 인자가 다수인 함수 사용 시 기본 구문은 다음과 같다.
push [n번째 인자]
push [n-1번째 인자]
...
push [첫번째 인자]
call [함수]
이를 활용하여 다음 C 프로그램을 어셈블리로 작성해 볼 것이다.
printf("hello, %s\n", "assembly");
활용 프로그램: x32dbg
상세
1. 메모리에 필요한 문자열을 적재한다. 어셈블리에서는 쌍따옴표가 필요없다.

2. 점프 테이블에서 printf 함수의 주소를 복사한다.

3. 코드를 작성한다.
push 0x403040 // assembly
push 0x403030 // hello %s\n
call 0x402614 // printf

4. 실행 결과를 확인한다.

주의 사항
메모리 주소에서 Edit을 통해서 \n을 입력할 경우, 문자열로 \n이 그대로 출력된다.


따라서 Edit에서는 'hello world %s'만 입력하고, 좌측 하단 dump에서 스페이스 바를 눌러 개행문자를 뜻하는 0A를 입력했다.

'프로그래밍 > 리버싱' 카테고리의 다른 글
| 인자가 다수인 함수의 활용 (0) | 2026.10.10 |
|---|---|
| 어셈블리로 문자열 출력하기 (0) | 2026.10.10 |
| 어셈블리의 PUSH 명령어 (0) | 2026.10.10 |
| 어셈블리로 메모리 액세스 하기 (0) | 2026.10.10 |
| 어셈블리의 DIV 명령어 (0) | 2026.10.06 |