self modification code가 리눅스에서 가능할까요?

toy의 이미지

self modification code 가 리눅스에서 가능할까요??
물론 보호모드상태에서요...

방준영의 이미지

예, 가능합니다. x86에서는 코드 세그먼트와 데이터 세그먼트가 같은 주소 공간상에 중첩이 되어 있어서 아무 코드 부분이나 데이터처럼 써넣으면 변경은 됩니다. 돌아가는 것은 물론 그 다음 문제이겠지만요. 코드와 데이터가 완전히 격리되는 아키텍쳐에서는 코드 영역을 쓰기 가능하게 변경한 다음 데이터를 써넣고 다시 읽기 전용으로 변경하면 되겠죠.

Necromancer의 이미지

http://linuxassembly.org

코드중첩 예제가 있던걸로 기억합니다.

함 찾아보세요.

하지만 코드중첩의 경우 속도를 위해서는 권하지 않는 코딩 방법입니다.

(캐시까지 다 바껴야 하니까요)

Written By the Black Knight of Destruction