2013-04-11 9 views
2

최근에 저는 네이티브 게임 (C/C++/etc) 용으로 Java에서 메모리 읽기/쓰기 인 광산 프로젝트를 진행해 왔습니다.JNA - 기본 주소 얻기

지금은 게임 메모리를 읽고 쓸 수있는 기반이 있지만 실행중인 응용 프로그램의 기본 주소를 얻는 방법이 필요합니다. 예를 들면 다음과 같습니다.

나는 치트 엔진과 포인터 탐색기를 사용하여 수집 한 포인터 목록을 가지고 있습니다. 이들은 게임이 다시로드 될 때마다 안정적으로 작동합니다.

지금 직면하고 문제, 최초의 포인터 (때마다 프로그램이 다시 시작을 변경) 프로그램의 기본 주소를 사용합니다 : "ac_client.exe"+ 000DF73C

내가 필요 해요 JNA를 사용하여 "ac_client.exe"의 기본 값을 얻는 방법.

나는 많은 연구를 해왔고 C++로 할 수있는 몇 가지 방법을 찾았지만 C/C++에 대한 지식은 매우 제한적이다. JNA를 사용하여 Java로 변환하기가 어렵고 여기에서 물어보고 누군가가 그러한 재능을 발휘할 수있는 대체 방법을 알고 있거나 도움이 될 수 있는지 알아 봅니다.

사전에 도움을 주셔서 감사합니다. Kaden.

[편집]

내 솔루션을 읽어보십시오! 도와 주셔서 감사합니다.

+2

동일한 이유로 내 자신의 프로젝트가 실제로 생겼습니다. JNA는 자체적으로'EnumProcessModules()'를 구현하지 않았으며, 모듈을 걷는 ToolHelp32Snapshot 메소드를위한'MODULEENTRY32'의 구현이 부족합니다. 나는 내 자신의'EnumProcessModules'을 발견하고 구글에서 찾은 코드에서 실행하려고 시도했지만 운이 없었다. 당신은 내가 여기서 참조하고있는 코드를 확인할 수 있습니다 : https://code.google.com/p/dsexplorer/source/browse/trunk/DSexplorer/src/luz/memoryTool/interfaces/Psapi.java?r=8 –

+0

@ AlexLynch, 완벽 했어. 마침내 제대로 작동 했어. 나는 그 프로젝트에서 몇 가지 클래스를 사용하여 내가 만든 메소드를 게시 할 것이다. – Kaden

답변

2

Alex가 올린 내용을 뒤범 거리며 작업하고 관리 할 수있었습니다.

Alex가 올린 프로젝트를 살펴보고 필요한 수업을 보게 될 것입니다. 방금 다음과 같이 사용했습니다.

public int getBaseAddress() { 
     try { 
       Pointer hProcess = gethProcess(); 
       List<Module> hModules = PsapiHandler.getInstance().EnumProcessModules(hProcess); 

       for(Module m: hModules){ 
         if(m.getFileName().contains(exeName)){ 
           misc.log(m.getFileName() + ": 0x" + Long.toHexString(Pointer.nativeValue(m.getEntryPoint()))); 
           return Integer.valueOf("" + Pointer.nativeValue(m.getLpBaseOfDll())); 
         } 
       } 
     } catch (Exception e) { e.printStackTrace(); } 
     return -1; 
} 
+0

hah : D가 잘되어서 기쁩니다. 나는 거의 똑같은 일을 스스로 시도했지만 간단히 작동하지 않았다. 오류 메시지 또는 아무것도, 아무것도. 전형적인 JNA. 잘 했어! –

+0

당신이 나에게 준 링크가 없으면 나는 하하를 포기했을 것이고, 나는 그것이 수행 될 방법이 무엇인지 단서가 없습니다. 다시 한번 감사드립니다 @Alex – Kaden

+0

직접 예외가 발생했습니다 - java.lang.Exception : EnumProcessModules가 실패했습니다. Error : 299 com.haxx.PsapiTools.EnumProcessModules (PsapiTools.java:53)'- 무슨 일이 일어날 지 모르겠다. 너는 이걸로 달렸어, 아니면 나 혼자로 했니? :) –