옵션 |
|
안녕하세요
파이선으로 로드되어있는 dll의 함수포인터를 가져오는걸 해보고 있는데 잘 안되네요
64비트 관련된 이슈인거 같은데 혹시 해결 방법 아시는분 계실까요?
윈764비트, 파이선 3.5.1 입니다.
아래 코드를 실행시키는 프로세스에서 ntdll.dll msvcrt.dll 모두 로딩되어 있는 상태입니다.
handle = kernel32.GetModuleHandleW("ntdll")
// handle = int: 2009726976
address = kernel32.GetProcAddress(handle, b"atoi")
// address = int: 2009751540
handle = kernel32.GetModuleHandleW("msvcrt")
// handle = int: -27590656
address = kernel32.GetProcAddress(handle, b"printf")
// address = 0
error = GetLastError()
print("error %d - %s" % (error, FormatError(error)))
// 126 - 모듈을 찾을 수 없습니다.
핸들값이 8바이트 인데 GetProcAddress는 4바이트의 입력이라 오류가 발생한 것이라고 조심스럽게 추측해보지만 관련된 검색어로 검색을 해보아도 풀리지가 않네요...