readprocessmemory 예제

세 개의 Win32 함수만 필요하며 작동 방식을 거의 추측할 수 있습니다. . 기술 장애물에 직면? 관심있는 숙련 된 전문가로부터 필요한 도움과 지침을 얻으십시오. 번거 로움없이, 언제 어디서나 질문을합니다. . . 안타깝게도 유닉스와 유사한 시스템에 대한 표준 플랫폼 간 디버깅 API는 없습니다. 대부분은 ptrace() 시스템 호출을 가지고 있지만 각 시스템은 약간 다르게 작동합니다. ptrace()는 POSIX의 일부가 아니지만 시스템 V 릴리스 4(SVr4) 및 BSD에 나타난 다음 다른 곳에서 복사합니다. 절차는 다른 유닉스 좋아요에 유사하지만 다음 모두 리눅스에 특정됩니다. 내 동기는 단일 플레이어 윈도우 게임에서 인앱 구매를 우회했다. 사실, 내가 하지 않았을 때 내가 구입 한 게임을 설득하고 싶었다.

일단 내가 성공적으로 작동 했다, 내가 비교 하는 것이 재미 있을 것 이라고 생각 하기 때문에 리눅스에 MemDig 를 포팅. 이 문서에 대 한 Windows로 시작 합니다. 나는 최근에 MemDig라는 작은 게임 메모리 치트 도구를 함께 넣어. 특정 게임 값(점수, 생명, 금 등)의 주소를 찾을 수 있습니다. 그런 다음 주소를 사용하여 원하는 값으로 해당 값을 수정할 수 있습니다. 그게 전부입니다. 전체 치트 도구의 경우 VirtualQueryEx를 통해 매핑된 메모리 영역을 찾아야 합니다. 그것은 간단하지 않다, 그러나 나는 다른 기사를 위해 그것을 떠날 것이다. 나는 20 년 전으로 거슬러 올라가는이 같은 도구를 사용해 왔지만 지금까지 자신을 작성하려고 하지 않았습니다. 요즘에서 선택하는 많은 메모리 치트 도구가 있습니다, 가장 눈에 띄는되는 속임수 엔진. 이러한 도구는 플랫폼의 디버깅 API를 사용하므로 디버거가 특정 주소를 찾고 값을 잠그는 등 디버거가 적절히 전문화되지는 않지만 좋은 디버거도 동일한 작업을 수행할 수 있습니다. 반품 값을 확인하고 작성된 것을 확인하는 것을 잊지 마십시오.

마지막으로 작업이 완료되면 닫는 것을 잊지 마십시오. . 매우 간단하며 이 목적을 위해 모든 플랫폼에서 가장 간단한 API일 수 있습니다(업데이트 참조). 업데이트: 콘스탄틴 Khlebnikov는 리눅스 3.2 (2012년 1월) 및 glibc 2.15 (2012년 3월) 이후 사용할 수 있는 process_vm_readv() 및 process_vm_writev(시스템 호출)를 지적했습니다. 이러한 시스템 호출에는 ptrace()가 필요하지 않으며 원격 프로세스를 중지할 필요가 없습니다. 프로세스를 먼저 “열”필요가 없다는 점을 제외하고는 ReadProcessMemory() 및 WriteProcessMemory()와 동일합니다. . 일반적인 Linux 방식으로 다른 프로세스가 포함된 경우 /proc 파일 시스템에서 표준 파일 API를 사용합니다.

각 프로세스에는 /proc 아래의 디렉터리가 프로세스 ID로 지정되어 있습니다. 이 디렉터리에서는 “mem”이라는 가상 파일이 있는데, 이 파일은 매핑되지 않은 영역을 포함하여 해당 프로세스의 전체 주소 공간의 파일 보기입니다.