문제

나는 할 수 있으로 얻고 낮은 수준의 프로그래밍(읽기/쓰기를 메모리는 종류의 것)및 실행으로 문제점을 찾을 수 없습니다 대답니다.

조각의 정보를 읽고 싶어에 주소를 가지고 있는 상대적을 DLL 로드 메모리에서 전자,g,그것은에 mydll.dll +0x01234567.문제 im 있는 dll 주위에 이동하는 메모리에만 오프셋은 동일합니다.어쨌든 위치를 찾아의 이 dll 을 메모리에 있습니다.

나는 현재이 작업을 수행하기 위해 노력하고 바람직하게는 c#에서 그러나 나는 감사하게 될 것이 도움을에서 가장 highish 수준 언어입니다.

도움이 되었습니까?

해결책

나는 방법을 시도 털 워커는 제안하고 그것을 얻을 수있게 작업(나는 생각하지 않았기 때문에 일을 dll 로드 된 일부분으로의 또 다른 실행 그래서 그것을 찾을 수 없습니다 그래서 쉽게).

나는 그를 발견하는 솔루션을 나를 위해 일하는 것입니다 그래서 여기에:

내가 만든 유형의 개체 프로세스

String appToHookTo = "applicationthatloadedthedll";
Process[] foundProcesses = Process.GetProcessesByName(appToHookTo)
ProcessModuleCollection modules = foundProcesses[0].Modules;
ProcessModule dllBaseAdressIWant = null;
foreach (ProcessModule i in modules) {
if (i.ModuleName == "nameofdlliwantbaseadressof") {
                    dllBaseAdressIWant = i;
                }
        }

이제 당신은 모듈을 수행할 수 있습 dllbaseAdressIWant.BaseAddress 을 얻은 값으로 설정합니다.

다른 팁

에서 Win32 원근법 당신을 사용할 필요가 GetModuleHandleGetModuleInformation 기능입니다.이러한 하자를 보이는 모듈을 처리하여 이름,그리고 다음의 정보를 검색 포함하여,기본 주소에 대해 그 처리합니다.

그것은 바로 앞으로 감싸는 이러한 Api 를 사용하여 표준 P/호출에 중요한 헌납자이었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top