메모리 데이터를 읽으시겠습니까?
메모리 주소 읽기 및 쓰기 예시
Private 선언 함수 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
p>
'지정된 창을 찾아 창 핸들 반환
개인 선언 함수 GetWindowThreadProcessId Lib "user32"(ByVal 창 핸들 As Long, lpdwProcessId As Long) As Long
'프로세스 및 스레드 식별 문자를 가져오고 창 스레드의 식별자를 반환합니다.
개인 선언 함수 OpenProcess Lib "kernel32"(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'기존 스레드에 대한 핸들 열기, 스레드 핸들 반환, 읽기 및 쓰기 권한 설정
비공개 선언 함수 WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long
'쓰기 메모리
Private 선언 함수 ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long
'Read memory
Private 선언 함수 CloseHandle Lib "kernel32"(ByVal hObject As Long) ) As Long
'프로세스 핸들을 닫고 부울 값을 반환합니다.
Private Sub btnPasteName_Click()
' (1) 일부 필수 변수 선언
Dim 창 핸들 As Long ' FindWindow 함수에서 반환된 창 핸들을 저장합니다.
Dim 식별자 As Long '저장 프로세스 식별자(Process Id)
Dim 프로세스 핸들 As Long '스토리지 프로세스 핸들
' (2) 알려진 창 제목이 있는 창 핸들 얻기
창 핸들 = FindWindow(vbNullString, "Untitled - Notepad")
If (창 핸들 = 0) Then '계산기가 실행되고 있지 않으면 0을 반환합니다.
MsgBox "계산기 창을 찾을 수 없습니다!"
Exit Sub '프로세스를 직접 종료합니다
Else '계산기가 실행 중인 경우 창 핸들을 인쇄합니다.
MsgBox "창 핸들은 다음과 같습니다." & 창 핸들
End If
' (3) 이전에 얻은 창 핸들을 사용하여 스레드 ID를 얻습니다. Symbol
GetWindowThreadProcessId 창 핸들, 식별자
MsgBox "식별자는 " & 식별자입니다
' (4) 스레드 식별자를 사용하여 전체 액세스 권한으로 프로세스를 엽니다.
프로세스 핸들 = OpenProcess(1, False, 식별자)
If(프로세스) handler = 0) Then
MsgBox "권한이 XP에서 실패를 반환하는 영어 표현을 사용하는 경우"
Exit Sub
Else 'If the process 성공적으로 열리면 프로세스 핸들을 인쇄합니다.
MsgBox "프로세스 핸들은 다음과 같습니다: " & 프로세스 핸들
End If
' 메모리에 이름을 씁니다. 참고: 도구를 사용하여 메모리 주소를 직접 찾으세요.
'WriteProcessMemory 프로세스 핸들, &H14DD4, "12345", 5, 0&
Dim str As String * 20 '저장소 표시 텍스트
' 메모리 데이터 읽기
ReadProcessMemory 프로세스 핸들, txtDisplay.Text, str, 20, 0&
'가 텍스트 상자에 표시됩니다.
txtDisplay.Text = str
' 프로세스 핸들 닫기
x = CloseHandle(프로세스 핸들)
If (x = 0) Then
MsgBox "프로세스 종료 실패"
Else
MsgBox "프로세스가 성공적으로 종료되었습니다.
End If
End Sub