Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: app.path &"\"&app.exename&".exe" Добавлено: 28.11.03 09:42  

Автор вопроса:  NeForm@t | Web-сайт: g--k.newmail.ru | ICQ: 252999255 

ПРи попытке исправить пару байту вылетает с ошибкой в доступе! Как мне в RealTime записать в свою прогу пару байтов???????????????????????

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 28.11.03 10:03
Никак. Пока программа работает, к ней доступ получить нельзя.

Ответить

Номер ответа: 2
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #2
Добавлено: 29.11.03 01:28

...ну ни так всё .... плохо ты хочешь извенить код в работающей программе из .... самой эе программы ?... или из вне?....

вообщем если кто занет программу АРТ МАНИ +)))) тот наверно дошадается что это можно ... вот примерчик....

'You Need a button (Command1).

' MaRiШ G. Serrano. 16/Abril/2002.-

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Declare Function WriteString Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'Private Declare Function WriteValue Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long

Private Sub Command1_Click()

Dim str As String, MyString As String

MyString = "HELLO"

'in this case I read the memory of my own process

MsgBox "MyString= " & MyString

str = ReadMemory(Me.hWnd, StrPtr(MyString), LenB(MyString), "BYE!!")

MsgBox "Now, MyString=" & MyString & vbCr & "Old Value= " & str

End Sub

Private Function ReadMemory(hWnd As Long, Address As Long, Bytes As Long, Optional strReplaceWith As String) As String

'Runs For Not Unicode Strings (VB-Strings)

On Error Resume Next

Dim pId As Long ' Used to hold the Process Id

Dim pHandle As Long ' Holds the Process Handle

Dim bytValue As Long 'Stores the value of a byte in the memory

Dim i As Long

Dim Text As String

' Get the ProcId of the Window

GetWindowThreadProcessId hWnd, pId

' use the pId to get a handle

pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pId)

If (pHandle = 0) Then

'MsgBox "Unable to open process!"

Exit Function

End If

If Address = 0 Then Exit Function

For i = 1 To Bytes Step 2

' Read Byte to Byte

ReadProcessMemory pHandle, Address + i - 1, bytValue, 1, 0&

'value now contains the long value of the byte located in [Address + i - 1] pos.

'ReadMemory is a string...

ReadMemory = ReadMemory & Chr$(bytValue)

Next

'to write numeric values you can ..(Must) use WriteValue API

If LenB(strReplaceWith) <> 0 Then

'No Unicode!!

WriteString pHandle, Address, StrPtr(strReplaceWith), LenB(strReplaceWith), 0&

End If

'Close the Handle

CloseHandle pHandle

End Function

есть ещё один способ ... хм... может позже найду... это патчить код ..... своей же работающей программы.... для чего это надо ??? ну например хотите сделать ассемблерную вставку в свой код для улучшения... либо придания новых возможностей программе.. и тд...... ну само сабойвы например делате ... функцию ... флудную.... в которую и будетет сувать ассемблерный код.... (в виде байтов конечно же...) почему флудную???? ну чтоб было у вас место для вашего кода +)

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 29.11.03 07:10
Сотп, стоп, стоп! Fallout, ты изменяешь не код exe, а кусок
оперативной памяти, выделенной какому-то процессу. В вопросе чётко
сказано: "Как мне в RealTime записать в свою прогу пару байтов?".

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам