짜릿한 모험: 자가 수정 C 프로그램 만들기
2025-05-25
이 글에서는 실행 중에 자체 코드를 수정할 수 있는 C 프로그램을 만드는 방법을 자세히 설명합니다. 저자는 먼저 프로그램 코드가 메모리에 어떻게 저장되는지, 그리고 `mprotect()` 함수를 사용하여 코드 세그먼트의 권한을 변경하여 쓰기 가능하게 만드는 방법을 설명합니다. 그런 다음 `addl` 명령어의 즉치 값을 변경하여 프로그램의 실행 결과를 변경하는 방법을 보여줍니다. 마지막으로 `memcpy()`를 사용하여 셸 코드를 프로그램의 코드 세그먼트에 복사하여 실행 중에 셸 명령어를 성공적으로 실행합니다. 이 전체 과정은 기술적으로 어렵고 x86_64 어셈블리 언어에 대한 깊이 있는 이해가 필요합니다.
개발
자가 수정 프로그램