Страница: 1 | 2 |
Вопрос: Перехват и замена Апи как?
Добавлено: 12.08.05 20:19
Автор вопроса: Amor | ICQ: 1268198
Или как хотябы получить всё содержание меню пуск, иконок около часов
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 12.08.05 20:40
на wasm.ru есть статьи по перехвату вызовов api-функций.
Номер ответа: 2
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #2
Добавлено: 12.08.05 22:04
на сайте есть примеры от sne по перехвату АПИ функций
Номер ответа: 3
Автор ответа:
Amor
ICQ: 1268198
Вопросов: 31
Ответов: 101
Профиль | | #3
Добавлено: 13.08.05 00:27
Хде?
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 13.08.05 00:35
да не партесь, он не разберётся сам с перехватом, чтобы получить то что он хочет.
Это больше склонно к "получите мне всё содержание меню пуск, иконок около часов..."
я нечего не имею против, когда 0 в какой-то области, то сам такой... Просто говорю как есть, он не разберётся, у кого время есть лучше накодите ему...
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 13.08.05 00:45
тут: http://vbnet.ru/samples
ЗЫ
кто ищет тот найдет
Номер ответа: 6
Автор ответа:
Amor
ICQ: 1268198
Вопросов: 31
Ответов: 101
Профиль | | #6
Добавлено: 13.08.05 07:09
nu ti pisec kruto skazal
Номер ответа: 7
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #7
Добавлено: 13.08.05 11:16
Amor, я начал перехватывать АПИ после 1,5 года программирования. Тогда я уже знал ВБ хорошо, и С++ на начальном уровне. Если ты тоже это знаешь - вперед на rsdn.ru - там статьи есть по перехвату, на С++.
На ВБ перехватить АПИ функцию невозможно (по крайней мере, я в этом уверен). Надо использовать что-то типа АСМ или С++ (или С без плюсов .
Номер ответа: 8
Автор ответа:
Amor
ICQ: 1268198
Вопросов: 31
Ответов: 101
Профиль | | #8
Добавлено: 13.08.05 13:29
Почемуже можно ASM вставки в VB
Номер ответа: 9
Автор ответа:
Amor
ICQ: 1268198
Вопросов: 31
Ответов: 101
Профиль | | #9
Добавлено: 13.08.05 13:31
http://dotfix.net/
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 13.08.05 14:23
это не вставки а недоразумение, все равно даже если бы и была возможность нармального использования ассемблера в VB6 приложениях, тебе это не помогло бы...
Номер ответа: 11
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #11
Добавлено: 13.08.05 16:00
какая разница? вставки/не_вставки, пофиг, тебе надо внедрять ДЛЛ, нормальную stdcall DLL, а не то, что создает ВБ....И пофиг, что нашли способ создавать на ВБ stdcall DLL, я пробовал это делать, DLLMain почему-то не вызываеться. Ещё надо подгружать в процесс msvbvm60.dll, короче - ВБ не для перехвата.
Номер ответа: 12
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #12
Добавлено: 13.08.05 16:52
Если бы DLLMain не вызывалась, загрузчик бы послал библу нафиг, ибо ему надо, чтобы DLLMain вернула TRUE.
Ты каким методом создания dll пользовался?
Номер ответа: 13
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #13
Добавлено: 13.08.05 22:14
GSerg спорим???
Библиотека подгружена, все тип топ, а DLLMain не вызвана! 100%
Я внедрял её.
Как создавал ДЛЛ: на этом сайте в примерах есть мой пример глобального хука. Он неудачный, кстати, глобальным хук не стал, но там именно stdcall DLL на ВБ.
http://vbnet.ru/sample/sampledownload.asp?id=551
А внедрял я такую ДЛЛ вот так:
Кинь на форму кнопку и текстовое поле. В текстовое поле впиши PID процесса, в который надо внедрить ДЛЛ
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function CreateRemoteThread Lib "kernel32.dll" (ByVal hProcess As Long, lpThreadAttributes As Long, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32.dll" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Const INFINITE As Long = &HFFFFFFFF
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
Private Const MEM_COMMIT As Long = &H1000
Private Const PAGE_READWRITE As Long = &H4
'++++++++++++++++++ end of Inject Dll function declarations
Private Sub Command1_Click()
InjectDLL Val(Text1.Text), ":\피\Projects\SD\Release\apih1.dll"
End Sub
Function InjectDLL(pID As Long, szLibFile As String) As Boolean
'+++++++++++++++++++++ © Inject Dll function by DaSharm.
' Î÷åíü áîëüøàÿ áëàãîäàðíîñòü sne (sne_pro@mail.ru) çà òî,
' ÷òî òûêíóë ïàëüöåì íà ìîè îøèáêè.
Dim hProcess As Long, pszLibFileRemote As Long, hThread As Long, pfnThreadRtn As Long, LibLen As Long, TID As Long, BytesWritten As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0&, pID)
If hProcess = 0 Then GoTo ERR_HND
'LibLen = Len(szLibFile)
pszLibFileRemote = VirtualAllocEx(hProcess, ByVal 0&, ByVal Len(szLibFile) + vbNull, MEM_COMMIT, PAGE_READWRITE)
If pszLibFileRemote = 0 Then GoTo ERR_HND
BytesWritten = WriteProcessMemory(hProcess, ByVal pszLibFileRemote, ByVal szLibFile, Len(szLibFile) + vbNull, ByVal 0&
If BytesWritten = 0 Then GoTo ERR_HND
pfnThreadRtn = GetProcAddress(GetModuleHandle("kernel32.dll", "LoadLibraryA"
If pfnThreadRtn = 0 Then GoTo ERR_HND
hThread = CreateRemoteThread(hProcess, ByVal 0, ByVal 0, ByVal pfnThreadRtn, ByVal pszLibFileRemote, 0, TID)
WaitForSingleObject hThread, INFINITE
CloseHandle hProcess
Exit Function
ERR_HND:
VirtualFreeEx hProcess, ByVal pszLibFileRemote, ByVal Len(szLibFile) + vbNull, MEM_RELEASE
CloseHandle hProcess
End Function
Код 100% внедряет ДЛЛ и, конечно, DLLMain всегда вызываеться...хи, но не с ДЛЛами, созданными на ВБ. Вообще-то надо попробовать сперва внедрить msvbvm60.dll а птом уже внедрять другие длл, мож прокатит, не пробовал, просто взял С++ и кодил на нем...
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 14.08.05 00:38
2 DaSharm Знакомый код Подтверждаю, работает 100% Добавлю лишь то что проги которые мониторят память (антивири, фаеры) ругаются на такой метод внедрения...
Номер ответа: 15
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #15
Добавлено: 14.08.05 18:59
Не, люди, вот человек задал вопрос: