Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Чтение из памяти! Добавлено: 22.06.08 14:41  

Автор вопроса:  JacK | Web-сайт: idiot.ru | ICQ: 9580088 
Хочу прочитать пасс из памяти qip.
Но у меня не получается найти указатель на строку пароля.
Вот кусок кода на делфи:
   MyReadProcessMemory(hp, pointer(ADR), @pt, 4, t);
   adr:=pt;
  end;
 MyReadProcessMemory(hp, pointer(ADR), @buf, 10, t);

Где, для моей версии ADR является - 006972EC.
А вот моя шняга, она работает, только когда непосредственно дашь адрес пароля, его я находил через winhex. Но она не работает с адресом указателя пароля. Я действитель но смотрел там лежит правильный адрес но как его правильно считать?
Private Const PROCESS_VM_OPERATION = &H8
Private Const PROCESS_VM_READ = &H10
Private Const PROCESS_VM_WRITE = &H20

Private Sub Command1_Click()
 Dim hwnd As Long
    Dim pid As Long
    Dim hProcess As Long
    Dim str As String * 10
    Dim qwe As String * 4
    hwnd = FindWindow(vbNullString, "[qip] - 371213816")
    If (hwnd = 0) Then MsgBox hwnd
    GetWindowThreadProcessId hwnd, pid
    hProcess = OpenProcess(PROCESS_VM_READ, False, pid)
    ReadProcessMemory hProcess, &H6972EC, "&H" & qwe, 4, 0&
    ReadProcessMemory hProcess, "&H" & qwe, str, 10, 0&
Text1.Text = str
    CloseHandle hProcess
End Sub

"&H" & qwe - вот меня эта строчка смущает...
Кароче как считать из памяти HEX, а не ASCII?

Ответить

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

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



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 22.06.08 15:29
Блин, в аську меня вчера достал этим вопросом =)
HEX и ASCII это только представление данных, запомни...

Private Sub Command1_Click()
 Dim hwnd As Long
    Dim pid As Long
    Dim hProcess As Long
    Dim str As String * 10
    Dim qwe As long
    hwnd = FindWindow(vbNullString, "[qip] - 371213816";)
    If (hwnd = 0) Then MsgBox hwnd
    GetWindowThreadProcessId hwnd, pid
    hProcess = OpenProcess(PROCESS_VM_READ, False, pid)
    ReadProcessMemory hProcess, &H6972EC, qwe, 4, 0& ' читаем указатель на пароль по адресу &H6972EC (в каждой версии это значение разное, видимо)
    ReadProcessMemory hProcess, qwe, str, 10, 0& ' читаем пароль (10 символов)
Text1.Text = str
    CloseHandle hProcess
End Sub

Ответить

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



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #2
Добавлено: 22.06.08 15:33
Эхе, так не получается))

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 22.06.08 17:35
а если qwe оставить long, но передавать VarPtr(qwe)

Ответить

Номер ответа: 4
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #4
Добавлено: 22.06.08 17:46
Ёх, спасибо... поясни чё ты сделал?))
VarPtr(qwe)

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 22.06.08 17:48
работает??)
ну передаём не qwe, а указатель на переменную qwe

Ответить

Номер ответа: 6
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #6
Добавлено: 22.06.08 17:52
Хитро)))
Работает на ура!

Ответить

Номер ответа: 7
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 22.06.08 18:59
Что хитрого-то? =) У всех нормальных людей оно в декларациях ByRef объявлено, а у тебя ByVal, вот мой способ и не сработал =)

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 22.06.08 20:20
и действительно byref в объявлении ReadProcessMemory

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 22.06.08 20:45
А зачем читать из памяти? Помойму проще из файла, затем расшифровать...

Ответить

Номер ответа: 10
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #10
Добавлено: 22.06.08 21:00
Да геморрой он себе зарабатывает просто... =)

Ответить

Номер ответа: 11
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #11
Добавлено: 22.06.08 22:30
Чтобы расшифровать пароль, сначало нужно отдебажить, найти алгоритм, и потом, хочешь сказать у тебя получится меньше кода при расшифровке? Не думаю...
Ну и где больший геморой?!

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 22.06.08 23:28
Я бы сказал, где геморрой (хоть я и не медик), но не стану.
...
Хотя нет, скажу. Геморрой на экзамене по матану=)

Ответить

Номер ответа: 13
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 23.06.08 01:08
Да потому что в разных версиях квипа адреса разные, вот тебе и геморрой. А как искать по сигнатуре ты вряд ли быстро разберешься. А алгоритм шифрования в файле во всех версиях одинаковый. Даже в Infium сохранился.

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 23.06.08 23:30
Чтобы расшифровать пароль, сначало нужно отдебажить, найти алгоритм, и потом, хочешь сказать у тебя получится меньше кода при расшифровке? Не думаю...
Ну и где больший геморой?!

Ой я тебя умоляю :)
Когда вы ещё пешком под столом ходили, я ковырялся в исходниках пинча, и помойму QIP даже на васик переписывал :) Так что поверь, гораздо проще пароль из файла расшифровать :)) А то придется смещение для каждой версии квипа эксперементальным путем добывать :))

Ответить

Номер ответа: 15
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #15
Добавлено: 24.06.08 16:59
Ой, какой молодец!
Все смещения до версии 8020 уже оперделили до нас.
Определения смещения для версии 8060, у меня заняло меньше минуты.
1. Сначала я нашёл пасс в памяти WinHex'ом.
2. Потом нашёл в памяти 16-ричное значение адреса ячейки с паролем.
Вуаля.
А, то, что ты такой крутой программер, никто и не сомневался)

Ответить

Страница: 1 | 2 |

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



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