Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Билилиотека для Hook'a в NET'e 
:(
    Опции темы
megel
Дата 8.9.2010, 21:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.5.2008

Репутация: нет
Всего: нет



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

отличие этой библиотеки в том что загружаемая библиотека может быть написана на С# или на Boo( что желательнее т.к. в библ. включены макросы которые облегчают работу)
скорость работы hook'нутой функции примерно в 8 раз медленнее чем обычной(при условии что функции пустые)


пример запуска библеотеки( на Boo) : 

Код

process = RemoteProcess()
process.StartProcess( "C:/Games/Counter-Strike/hl.exe -game cstrike", true) //запуск процесса


process.RegisterComAssembly( LoadingLib.RunClass) // регистрация com типов
pointer = processs.CreateCom( LoadingLib.RunClass, LoadingLib.IRunBase) // создание класса в процессе
processs.ComInvokeFirst( pointer) //  вызов первого метода в классе "LoadingLib.RunClass"
process.ResumeProcess()


код самой библиотеки

Код

[Guid( "d7ef7c2a-8c50-424d-84af-36e380320835"), 
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IRunBase :
    
    def RunHook() :
        pass


[Guid( "d96ce0d8-3264-4d72-a1f7-bc1dd3574033")]
class RunClass( IRunBase) :
    
    
    hook as GlClear

    public def RunHook() :
        
        hook = GlClear()
        hook.SetData( "opengl32.dll", "glClear")
        hook.DoHook()

[ DllImport( "user32.dll", EntryPoint : "GetKeyState")]
static def GetKeyState( key as Keys) as short :
    pass

[ DllImport( "opengl32.dll", EntryPoint : "glLineWidth")]
static def glLineWidth( value as single) :
    pass

[ DllImport( "opengl32.dll", EntryPoint : "glPolygonMode")]
static def glPolygonMode( type as int, value as int) :
    pass
    
static def IsKeyDown( key as Keys) :
    return GetKeyState( key) < 0

[ GenerateHook()] // аттрибут который автоматически создает нужный класс
static def GlClear( mode as int) :
    

    mode = 0x1B02
    if IsKeyDown( Keys.ShiftKey) :
        mode = 0x1B01

    glLineWidth( 2.0)
    glPolygonMode( 0x0408, mode)
    GlClear( 0x00004000 | 0x00000100)


кстати это код wallhack'a для couter-strike


библиотека еще довольно сырая, но на windows 7 работает нормально
название библиотеки такое странное т.к я еще не выбрал название( и еще лучше не использовать слово Hook в названии)
естественно работать с библиотекой надо внимательно т.к при неправильной записи
функции вы даже не увидите сообщение об ошибке( например при перехвате функции интерфейса надо добавлять праметр IntPtr thisValue)

библиотеку я буду еще дорабатывать,
буду рад если кто-то заинтерисуется, я могу объяснить подробнее как с ней работать




Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  HelpLibrary.rar 893,96 Kb
PM MAIL   Вверх
56illusion
Дата 12.9.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.5.2010

Репутация: нет
Всего: нет



А с ней значет можно перехватывать нажатые клавиши???
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.