Страница: 1 | 2 |
Вопрос: Чтение из памяти!
Добавлено: 22.06.08 14:41
Автор вопроса: JacK | Web-сайт:
Хочу прочитать пасс из памяти qip.
Но у меня не получается найти указатель на строку пароля.
Вот кусок кода на делфи:
adr:=pt;
end;
MyReadProcessMemory(hp, pointer(ADR), @buf, 10, t);
Где, для моей версии ADR является - 006972EC.
А вот моя шняга, она работает, только когда непосредственно дашь адрес пароля, его я находил через winhex. Но она не работает с адресом указателя пароля. Я действитель но смотрел там лежит правильный адрес но как его правильно считать?
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-сайт:
Профиль | | #1
Добавлено: 22.06.08 15:29
Блин, в аську меня вчера достал этим вопросом
HEX и ASCII это только представление данных, запомни...
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-сайт:
Профиль | | #2
Добавлено: 22.06.08 15:33
Эхе, так не получается))
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 22.06.08 17:35
а если qwe оставить long, но передавать VarPtr(qwe)
Номер ответа: 4
Автор ответа:
JacK
ICQ: 9580088
Вопросов: 13
Ответов: 1078
Web-сайт:
Профиль | | #4
Добавлено: 22.06.08 17:46
Ёх, спасибо... поясни чё ты сделал?))
VarPtr(qwe)
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 22.06.08 17:48
работает??)
ну передаём не qwe, а указатель на переменную qwe
Номер ответа: 6
Автор ответа:
JacK
ICQ: 9580088
Вопросов: 13
Ответов: 1078
Web-сайт:
Профиль | | #6
Добавлено: 22.06.08 17:52
Хитро)))
Работает на ура!
Номер ответа: 7
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #7
Добавлено: 22.06.08 18:59
Что хитрого-то? У всех нормальных людей оно в декларациях ByRef объявлено, а у тебя ByVal, вот мой способ и не сработал
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #10
Добавлено: 22.06.08 21:00
Да геморрой он себе зарабатывает просто...
Номер ответа: 11
Автор ответа:
JacK
ICQ: 9580088
Вопросов: 13
Ответов: 1078
Web-сайт:
Профиль | | #11
Добавлено: 22.06.08 22:30
Чтобы расшифровать пароль, сначало нужно отдебажить, найти алгоритм, и потом, хочешь сказать у тебя получится меньше кода при расшифровке? Не думаю...
Ну и где больший геморой?!
Номер ответа: 12
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 22.06.08 23:28
Я бы сказал, где геморрой (хоть я и не медик), но не стану.
...
Хотя нет, скажу. Геморрой на экзамене по матану
Номер ответа: 13
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #15
Добавлено: 24.06.08 16:59
Ой, какой молодец!
Все смещения до версии 8020 уже оперделили до нас.
Определения смещения для версии 8060, у меня заняло меньше минуты.
1. Сначала я нашёл пасс в памяти WinHex'ом.
2. Потом нашёл в памяти 16-ричное значение адреса ячейки с паролем.
Вуаля.
А, то, что ты такой крутой программер, никто и не сомневался)