чтение данных с процесса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.01.2012 (Чт) 21:09

Хакер писал(а):Это верх глупости, так делать.

Не согласен... В VB.NET, например, возможность использования As Any убрали :)
Лучше бы на другие ошибки обратил внимание.

Vadim_n писал(а):
Код: Выделить всё
Public Function ReadLong1(ByVal hProcess As Long, ByVal lpBaseAddress As Long) As Long
  Dim Result As Long
  ReadToLong hProcess, lpBaseAddress, Result, 1, Bytes
  If Bytes = 1 Then ReadLong1 = Result
End Function
Public Function ReadInteger1(ByVal hProcess As Long, ByVal lpBaseAddress As Long) As Integer
  Dim Result As Integer
  ReadToInteger hProcess, lpBaseAddress, Result, 1, Bytes
  If Bytes = 1 Then ReadInteger1 = Result
End Function
Public Function ReadSingle1(ByVal hProcess As Long, ByVal lpBaseAddress As Long) As Single
  Dim Result As Single
  ReadToSingle hProcess, lpBaseAddress, Result, 1, Bytes
  If Bytes = 1 Then ReadSingle1 = Result
End Function
Эти фнккции - полный бред.

А ещё
Vadim_n писал(а):
Код: Выделить всё
Public Function ReadInteger(ByVal hProcess As Long, ByVal lpBaseAddress As Long) As Integer
  Dim Result As Integer
  ReadToInteger hProcess, lpBaseAddress, Result, 4, Bytes
  If Bytes = 4 Then ReadInteger = Result
End Function
Integer занимает 2 байта, а не 4. Ещё везёт, что этот код вообще не падает.

Vadim_n писал(а):
Код: Выделить всё
      nomproce = "&H" & Hex(Text40.Text)
Адрес - это число, а не строка. Зачем такие выкрутасы с ним?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: чтение данных с процесса

Сообщение ger_kar » 06.01.2012 (Пт) 7:07

Qwertiy писал(а):Не согласен... В VB.NET, например, возможность использования As Any убрали
Но в VB6 то оно осталось, а коли осталось, его можно использовать без всяких извращений и то что из VB.NET его убрали не есть гут.
Бороться и искать, найти и перепрятать

Vadim_n
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 06.07.2009 (Пн) 17:17

Re: чтение данных с процесса

Сообщение Vadim_n » 06.01.2012 (Пт) 14:53

На мой взгляд вообще вопрос компетентности это как раз уровень знаний в какой либо области. Но каждый может достичь его разными путями и времени на это у каждого уйдет по разному

Скорее всего Вы правы и так оно и есть как про меня написали. Просто я оценив свои возможности, пришел к мнению что не смогу изучить сложные технологии строения памяти по байтно за необходимый период, но решил не выкидывать из-за этого компютер из окна а все-таки дойти до нужного результата пока что с теми силами что есть.
Я уже почти написал утилиту которая читает с памяти другого процесса опираясь от базового адреса по формулам нужные мне значения и заменяет некоторые, на основе прочитанных данных выполняет нужные мне действия.
Записать получилось в память, загвоздка была в том что надо было писать в 16-ричной системе, вычитал на других форумах и действительно писать по 1 байту пока необходимости нет как подсказали мне выше.
Код: Выделить всё
Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAdress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Function Hex2Str(ByVal data As String) As String
Dim i As Integer    'Hex2Str - переводит шестнадцатеричный код в текст
If Len(data) \ 2 = Int((Len(data) - 1) \ 2) Then data = 0 & data
For i = 1 To Len(data) Step 2
Hex2Str = Chr(Val("&H" + Mid$(data, i, 2))) & Hex2Str
Next i
End Function

WriteProcessMemory pHandle, nomproce, Hex2Str(Hex(zamena)), 4, 0&


Можно было просто заплатить человеку более компетентному в этом вопросе, но мне нужна утилита с исходником, в котором я буду знать какая часть кода за что отвечает, для дополнения нужных мне возможностей при необходимости и дальнейшей модификации утилиты по мере изменения процесса с которым она и работает. Ну и средств особо лишних нет на оплату создания и обслуживания программного обеспечения.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.01.2012 (Пт) 15:15

Ой, ёёёёёёё... Подожду-ка я, пока Хакер что-нибудь напишет...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чтение данных с процесса

Сообщение Хакер » 06.01.2012 (Пт) 15:34

Qwertiy писал(а):Ой, ёёёёёёё...

Вот именно. Что тут писать. Я уж писал, что с человеком, не проявляющим качеств, позволяющих стать компетентным — говорить не о чём. Иными словами, нас не интересуют солдаты, не желающие стать генералами.

А тут у нас человек, который очень хочет делать людям операции, не желая при этом изучать анатомию. Ну и скатертью дорога такому.

Vadim_n писал(а):Можно было просто заплатить человеку более компетентному в этом вопросе, но мне нужна утилита с исходником,

Даже здесь нет здравой логики.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: чтение данных с процесса

Сообщение ger_kar » 06.01.2012 (Пт) 15:55

Хакер писал(а):Иными словами, нас не интересуют солдаты, не желающие стать генералами.
Да хочет он, хочет!!!
Vadim_n писал(а):Просто я оценив свои возможности, пришел к мнению что не смогу изучить сложные технологии строения памяти по байтно за необходимый период
Нужен видимо просто период по больше, а вообще даже медведя можно научить ездить на велосипеде, так что Vadim_n вполне может научится если будет желание, а будет желание, тогда и время найдется. И наверное начать надо с самых азов.
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.01.2012 (Пт) 17:57

Ну, я вижу только игнорирование замечаний по поводу кода и написание такого кода, в котором разбираться дольше, чем написать всё с нуля. Взять хоть последний кусок кода - я про него минут 5 думал и так и не понял, почему нельзя было сделать без этой функции так:
Код: Выделить всё
WriteProcessMemory pHandle, nomproce, CLng(zamena), 4, 0&
Возможно из-за As Any как раз, т. к. надо значение передать, а не ссылку. Не пользовался As Any... И, в любом случае, там очевиден массив байт, а не сторка. И нет гарантии, что длина строки будет равна 4, она может быть и меньше, что уже явно плохо.

И это тоже:
Vadim_n писал(а):If Len(data) \ 2 = Int((Len(data) - 1) \ 2) Then
Ну почему нельзя понятно написать If Len(data) And 1 Then или If Len(data) Mod 2 = 1 Then?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: чтение данных с процесса

Сообщение Хакер » 06.01.2012 (Пт) 18:23

Qwertiy писал(а):Возможно из-за As Any как раз, т. к. надо значение передать, а не ссылку.

As Any не мешает передать значение, а не ссылку.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: чтение данных с процесса

Сообщение ger_kar » 06.01.2012 (Пт) 19:11

А еще As Any Обладает замечательным свойством, благодаря которому можно определить как передавать параметр, не только в самом объявлении, но и непосредственно при вызове ф-ции и таким образом переопределить тип передачи, объявленный в Declare
Бороться и искать, найти и перепрятать

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 19

    TopList