1. 소개 [확장]
지금까지 만들던 자잘한 프로그램과는 달리 조금 더 큰 규모로 만들어 보고싶어서 생각해냄..
이름하여..
메모리 패턴 검색기
주요 기능은 특정한 프로세스에 접근해서
응용 분야는.. 매번 프로그램을 재배포 할 필요 없이..
해당 패턴만 업데이트 하면 되고..
패턴이 바뀌지 않는 자잘한(?) 패치의 경우에 대해선..
스스로 위치를 탐색하기 때문에.. 개발 효율성의 증가를 기대함..
이름하여..
메모리 패턴 검색기
주요 기능은 특정한 프로세스에 접근해서
- 미리 정의해둔 패턴을 검색해서..
- 검색된 위치를 반환하고..
- 부가적인 수정을 할 수 있도록 하는것..
응용 분야는.. 매번 프로그램을 재배포 할 필요 없이..
해당 패턴만 업데이트 하면 되고..
패턴이 바뀌지 않는 자잘한(?) 패치의 경우에 대해선..
스스로 위치를 탐색하기 때문에.. 개발 효율성의 증가를 기대함..
2. 구성 [확장]
- 메모리 패턴을 읽어내기 위한 디스어셈블러 엔진
- 패턴 업데이트의 용이를 위한 스크립트 엔진
- 메모리 패턴 검색 엔진
- 자주사용하는 JMP치환이나 값 변경등의 내장함수 제작
3. 개발 [확장]
1) 디스어셈블러 엔진
현재 사용중인 디스어셈블러 엔진은 몇가지 에러를 포함하고 있기 때문에..
가능하다면, 다른 어셈블러 엔진을 찾거나..
현재 문제를 이르키는 부분의 수정이 필요함..
2) 스크립트 엔진
현재 계획은 스파이터멍키를 내장해서 자바스크립트 엔진을 넣을 계획이나..
굳이 큰 엔진을 넣을 필요가 없을듯 해서.. 간단하게 직접 스크립 엔진을 만들지도 모름..
3) 검색 엔진
좀더 빠르게 하기 위한 알고리즘 도입이 필요..
지금처럼 무식하게 비교 알고리즘을 돌리는건 오버헤드가 너무 큼..
4) 내장함수
주로 조건부 점프 구문을 많이 사용하기 때문에..
= JMP로 강제 변경하는 함수..
- 이때도 고려해야하는건.. 숏 점프의 경우는 사이즈가 같지만..
- 일반 조건부 점프의 경우 6바이트이기 때문에..
- JMP로 고치면서 NOP을 넣어 채워주고.. 주소부분을 1더해야함..
= JMP구문의 주소 변경
- 자주 사용하진 않지만.. 주소변경도 아주 가끔은 사용함..
= NOP코드로 채워 무시하는 함수
- 가끔은 그냥 바로 내려갈 경우도 있기 때문에..
= PUSH MOV 같은 명령어의 값 변경
- 함수로 넘기는 값을 강제로 바꿔서 넘길때 필요..
현재 사용중인 디스어셈블러 엔진은 몇가지 에러를 포함하고 있기 때문에..
가능하다면, 다른 어셈블러 엔진을 찾거나..
현재 문제를 이르키는 부분의 수정이 필요함..
2) 스크립트 엔진
현재 계획은 스파이터멍키를 내장해서 자바스크립트 엔진을 넣을 계획이나..
굳이 큰 엔진을 넣을 필요가 없을듯 해서.. 간단하게 직접 스크립 엔진을 만들지도 모름..
3) 검색 엔진
좀더 빠르게 하기 위한 알고리즘 도입이 필요..
지금처럼 무식하게 비교 알고리즘을 돌리는건 오버헤드가 너무 큼..
4) 내장함수
주로 조건부 점프 구문을 많이 사용하기 때문에..
= JMP로 강제 변경하는 함수..
- 이때도 고려해야하는건.. 숏 점프의 경우는 사이즈가 같지만..
- 일반 조건부 점프의 경우 6바이트이기 때문에..
- JMP로 고치면서 NOP을 넣어 채워주고.. 주소부분을 1더해야함..
= JMP구문의 주소 변경
- 자주 사용하진 않지만.. 주소변경도 아주 가끔은 사용함..
= NOP코드로 채워 무시하는 함수
- 가끔은 그냥 바로 내려갈 경우도 있기 때문에..
= PUSH MOV 같은 명령어의 값 변경
- 함수로 넘기는 값을 강제로 바꿔서 넘길때 필요..