동방프로젝트(이하 동프)를 분석하고 오토봄을 만들어 보자!

(분석편) - 현재 몇프레임이 지났는지 알려주는 메모리를 찾자!


8프레임의 대기시간을 재는 곳은 찾았지만 오토봄을 코딩하려면 그 프레임이 저장되는 메모리 위치를 알아야 됩니다. 한 번 찾아 봅시다.


분명 같은 곳인데 실행 할 때마다 ebp가 변해서 위치도 계속 변합니다 ㅠㅠ

하지만 ebp같은 cpu 레지스터는 접근하기 어려워요 그래서 포기할까 하던중에....

한 분에게 질문을 했습니다. 그랫더니 레지스터까지 받는 것보단 메모리에서 승부를 보는 것이 좋을 것 같다고 하셧습니다. 그 말을 듣고 디버거를 다시 봤습니다.

ECX와 EBP가 같다는 것을 발견했습니다. 컴파일러 중에는 레지스터끼리 값을 옮길때 메모리를 거쳐서 옮기는 경우도 있으므로 메모리에서 찾아 보았습니다. 

코드를 조금만 내려 볼까요?

esi에 어떤 0x4776ec에 있는 값을 넣는 군요 어떤 값일까요?


메모리 주소를 저장 하네요.


덤프로 따라가 봅시다.

오오 뭔진 모르겠지만 메모리 주소들을 저장하고 있군요.

하지만 ebp주소인 0x7188b08은 보이지 않습니다.


하지만 이 주변 어딘가에 또 메모리주소를 저장하는 곳이 있을 겁니다. 스크롤을 내려보죠.


오 ebp와 값이 같은 것을 찾았습니다.

저 위치는 0x477834에요.







이제 코딩을 위한 계획을 짜 보도록 하죠


0. 동방프로세스를 읽어온다.

1. readprocessmemory를 통해 0x477834에 있는 ebp값을 받아온다.

2. readprocessmemory를 통해 ebp+478에 있는 값을 실시간으로 받아온다.

3. 읽어온 값이 02면 'x'키를 입력하여 봄을 사용하게 한다.

4. 1부터 반복


그럼 다음에 봐요~


WRITTEN BY
Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다

,