내가 만든이 DLL이 있습니다. 그것은 다른 프로세스에 주입됩니다. 다른 프로세스 내에서, 나는 다음과 같은 기능을 가진 그것의 메모리 공간에서 검색을 수행삽입 된 프로세스의 메모리 공간에서 데이터 구조를 재구성하는 방법은 무엇입니까?
void MyDump(const void *m, unsigned int n)
{
const char *p = reinterpret_cast(m);
for (unsigned int i = 0; i < n; ++i) {
// Do something with p[i]...
}
}
을 이제 내 질문에. 대상 프로세스는 데이터 구조를 사용하는 경우의이
struct S
{
unsigned char a;
unsigned char b;
unsigned char c;
};
는 항상 프로세스의 메모리에 같은 방법을 제시 가정 해 봅시다? 사행은 = 2
Offset
---------------------
0x0000 | 0x020x030x04
같이, 메모리 공간 '과정의 연속 행에 나타난 구조 (항상 B = 3, C = 4 뒤에있는), 또는 이러한 변수가 될 수 있는지를 의미 메모리에서 다양한 지점에서의 데이터 구조를 재구성하는 방법 후자 경우
Offset
---------------------
0x0000 | 0x00 0x02 0x00
0x03fc | 0x00 0x03 0x04
, 등이 다른 장소에서? 미리
많은 감사
nhaa123
음, 응용 프로그램 자체가 분할 된 표준 : : 문자열을 찾는 방법 : 스크린 샷을 확인? 내 말은, 그 정보는 어딘가에 있어야한다는 거지, 그렇지? – nhaa123
응용 프로그램 자체가 해당 C++ 런타임을로드했을 것입니다. 런타임은 첫 번째 절반을 찾을 필요가 없습니다 (프로그램 논리가이를 처리 할 것입니다, 예를 들어 스택에 그 부분을 놓음으로써). 첫 번째 절반은 C++ 런타임에 의해 만들어 졌으므로 동일한 런타임에서이 부분을 사용하여 다른 부분을 다시 찾을 수 있습니다. 주된 문제는 문자 자체를 포함하는 std :: string의 두 번째 부분이므로 특정 문자열을 검색 할 때 찾을 수있는 유일한 부분 일 것입니다. – MSalters