2017-03-05 9 views
0

여러 프로그램에서 DLL 주입을했는데이 문제는 저에게 도전입니다. 아무리 여러 번 시도해도 필요한 값에 대한 정적 오프셋 목록을 찾을 수 없습니다. 또한 값은 수량이 변경 될 수 있으므로 함수에 모두 직접 액세스하는 것이 훨씬 효율적입니다.함수가 C++에서 액세스하는 주소를 찾는 방법은 무엇입니까?

치트 엔진에서는이 주소에 직접 쓰는 기능의 주소를 찾을 수있었습니다. "이 함수가 어떤 주소를 사용하는지 알아보십시오"옵션을 사용하여 필요한 모든 주소를 찾았습니다. 그러나 C++에서 프로그래밍 방식으로이 작업을 수행해야하며 어디에서 시작할지 모릅니다. 그리고 그 주제에 대한 Google 검색 결과도 찾을 수 없었습니다.

모든 정보는 대단히 감사하겠습니다!

업데이트 : 함수가 한 번에 하나씩 만 액세스하는 경우 유용합니다. 같은 전화에서 복수가 아닙니다.

편집 : opcode는 mov [esi],ebxebx이고 복사 대상은 esi이며 복사 대상입니다. 그래서 함수가 호출 될 때 esi의 값을 알아야합니다. 다행히도 내 질문의 폭을 넓히는 데 도움이되기를 바랍니다.

+0

이것이 너무 광범위하다는 것은 확실하지 않습니다. 나는 특정한 질문을했다. 프로그래밍 방식으로 함수에 액세스하는 주소를 찾는 방법 똑똑한 짝을 지을 수는 없지만 누군가 나를 깨우칠 수 있습니까? –

+0

"너무 광범위"가까운 이유는이 경우처럼 좋은 대답이 너무 길 때 종종 사용됩니다. 이 작업을 수행하는 직접적인 방법은 없습니다. –

+0

@HarryJohnston 아, 알겠습니다. 설명해 주셔서 고마워요. –

답변

1

간단히 deassembler를 실행하고 모두 mov edimov esilea 및 기타 메모리 액세스 지시문을 함수 내에서 추적 할 수 있습니다. 또한 coff를 사용하여 dll에서이 정보를 얻을 수 있습니다. 실행이 계속 진행되는 동안 주소가 변경되면 디버거와 CPU보기를 사용하십시오. 전략은 호출 스택 및 레지스터 상태에 액세스해야한다는 것입니다. 이것은 내가 웹에서 아마도 어쩌면 도움이되는지를 알려주는 것입니다. https://www.gironsec.com/blog/2013/12/writing-your-own-debugger-windows-in-c/