적는 것을 깜빡 하고 있었는데,
ATCode나 기타 방법들을 사용할 때,
한 함수 내에서 후킹 포인트는 단 하나만 잡아야 합니다.
아랄트랜스 0.2에서는
후킹과 동시에
실행파일 원본과 그 원본의 복사본을 준비해 놓고
원본의 후킹포인트를 jmp를 사용해서 번역 모듈로 이동하게 한 다음
복사본으로 이동시킨 뒤,
복사본의 함수가 끝나는 지점을 따라서 다시 원본으로 돌아오는 구조이기 때문에
한 함수의 맨 처음 후킹 포인트보다 뒤에 있는 후킹 포인트에 도달하지 않게됩니다.
그래서 후킹 모듈을 개선했습니다. ^^
0.3 버전에 적용될 겁니다.
후킹된 지점에서 사용자 정의 함수로 jmp 한 후 일련의 작업을 수행한 뒤 원본 코드로 돌아와야 하는데
jmp코드 때문에 원래 코드들이 깨졌으므로 원래코드를 코드조각으로 백업해서 이곳으로 점프를 시킵니다.
코드조각은 5~10바이트 정도의 원래 코드를 수행하고 원본으로 jmp합니다.
물론 복사본으로 jmp하는 예전 방식은 코드조각 백업 방식보다 더 안정적이므로 여전히 공존할 겁니다.
복사본으로 jmp 할 것인지 코드조각으로 jmp 할 것인지 프로그래머가 정할 수 있습니다.
물론 ATCode 플러그인의 경우 고급 사용자를 위해 두 방식 중 어떤 것을 사용할지 정할 수 있도록 해줘야겠죠.