Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Дневники и блоги —› engines
. 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение

Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 19 марта 2010 15:55 · Поправил: HandMill
· Личное сообщение · #1

Добро пожаловать.

Здесь будут выкладываться различные движки/библиотеки для программирования (в основном с тематическим уклоном), кратким описанием и ссылками.

Формат описаний для движков:

0. Группа(Указываем в квадратных скобках жирным шрифтом).

1. Название.(Указываем жирным шрифтом)
2. Краткое описание/возможности/фичи.
3. Язык программирования/языки программирования, поддерживаемые SDK данной библиотеки/движка(или на чём он написан).
4. Лицензия. (Если не знаете на верняка - не указывайте)
5. Ссылки на официальные сайты / неофициальные сайты / документацию / закачку.
6. Какая-либо информация о проекте, дата последнего обновления / жив ли вообще проект.

1.
2.
3.
...

Пунктов (цифер) не ставим, поскольку это на мой взгляд затрудняет чтение, пункты просто отделяем новыми абзацами. Группа - это обобщённое название анонсируемых вами движков, например "Дизассемблерные движки" или "Движки для работы с РЕ файлами". Краткое описание начинать со слов "%n движок" / "Движок для работы с %n" (например "Движок для работы с PE-файлами").

Предлагаю здесь не только сообщать о новых движках, но и обсуждать их работу (с).

-----
все багрепорты - в личные сообщения




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 19 марта 2010 16:59 · Поправил: Модератор
· Личное сообщение · #2

[Дизассемблерные движки]

---
diStorm
Дизассемблерный движок. Предназначен для разбора наборов инструкций 80x86 на 64 битных платформах (AMD64, X86-64) а также 16 и 32 битных. Дизассемблирует FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow! (w/ extensions), новые x86-64 наборы инструкций, VMX, AMD SVM и AVX!
Написан на c.
SDK поддерживает c/c++/python.
Лицензия BSD.
Официальный сайт, Google Code, Форум, Контакты
Последнее обновление 17th, Sep 2008. Сообщений о том что проект умер не встречал.

---
BeaEngine
Дизассемблерный движок. Мультиплатформенная библиотека x86 и x64, поддерживает FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES technologies наборы инструкций. Библиотека снабжена множеством примеров на различных языках программирования.
Написан на c.
SDK поддерживает: C/C++ (Visual Studio, GCC, MinGW, DigitalMars, BorlandC, WatcomC, SunForte, Pelles C). Assembler (usable with masm32 and masm64, nasm, fasm, GoAsm), Python, Delphi, PureBasic и WinDev.
Лицензия LGPL3.
Официальный сайт, Sweet Home, Форум, Контакты.
Последнее обновление от 16 January 2010. Проект жив.

---
udis86
Дизассемблерный движок. udis86 это маленькая и простая в использовании библиотека для дизассемблирования для архитектур x86 и x86-64. Основной целью разработки и развития udis86 является оказание помощи программных проектов, предназначенных для анализа бинарного кода.
Написан на c.
SDK поддерживает: C/C++
Лицензия BSD.
Официальный сайт, Страничка автора
Последний релиз от 2008-06-06. Весьма долго не было обновлений. Возможно проект сдох, но явных утверждений не встречал.

---
X86IME, x86 instruction manipulator
Дизассемблерный/ассемблерный движок для наборов инструкций x86 и x86_64 (32/64bits).
Написан на c.
SDK поддерживает: C/C++
Страничка проектов автора, Анонс на OpenRCE, Скачать, Патч для совместимости с UNIX

---
Hacker Disassembler Engine
Дизассемблерный движок для наборов x86 и x86_64 (32/64bits) инструкций. Отличительными особенностями можно считать маленький размер и поддержку FPU, MMX, SSE-SSE3, 3DNow! наборов инструкций.
Написан на ассемблере, но затем автор переписал на c.
SDK поддерживает: C/C++/паскаль/ассемблер
Авторская страничка проекта
Последние версии: hde32-0.28, hde64c-0.04. Проект автором более не поддерживается.

-----
все багрепорты - в личные сообщения





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 20 марта 2010 05:04 · Поправил: Gideon Vi
· Личное сообщение · #3

Kiev78 пишет:
Здесь - http://www.beaengine.org/ - тоже есть дизасм (не знаю, насколько он хорош).

Gideon Vi пишет:
не плох, на его основе FullDisasm под ольгу делается

Kiev78 пишет:
Я это знаю, так же как и то, что он жутко тормозной (в прямом смысле).


и фиг ли? Нам же не синтез в реальном времени высчитывать. За-то в активе много вкусных плюшек и проект жив.

зы. Предлагаю здесь не только сообщать о новых движках, но и обсуждать их работу




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 20 марта 2010 22:38 · Поправил: Isaev
· Личное сообщение · #4

Тема хорошая!
А отпишитесь кратко, кто что использовал в каких проектах и почему именно его, а не другой?
плюсы/минусы

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 марта 2010 23:10
· Личное сообщение · #5

Микаевский юзал. Потому что принимал участие в разработке, линк в другом топе давал уже.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 21 марта 2010 03:03 · Поправил: Gideon Vi
· Личное сообщение · #6

Kiev78 пишет:
причём в настройках его не отключить


дык он же работает только по шорткату

Дык он сперва анализирует весь файл

точно, май мистейк



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 26 марта 2010 15:13 · Поправил: HandMill
· Личное сообщение · #7

[Дизассемблерные движки]

---
Mediana
Дизассемблерный движок. Дизассемблер работает в 16/32/64битных режимах, поддерживаются общий набор инструкций Intel и AMD, наборы инструкций FPU, SSE1, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SMX, Intel-VT. Ожидается поддержка 3DNow! и AMD VMX. Дизассемблер определяет принадлежность инструкции к какой-либо группе инструкций, ID инструкции, тестируемые, изменяемые, устанавливаемые, сбрасываемые флаги регистра EFLAGS, а также флаги, значение которых не определено. Отлавливаются все избыточные префиксы, поддерживаются полудокументированные и недокументированные инструкции, UNICODE, многопоточность, работа в Linux и Windows.
Написан на c
Сайт проекта, Блог автора
Последнее обновление 26.03.2010. Автор Русский, проект поддерживает, принимает багрепорты и обещает оказать помощь при возникновении вопросов.

-----
все багрепорты - в личные сообщения




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 26 марта 2010 19:26
· Личное сообщение · #8

HandMill
А зачем дизасм нужен, ну кроме вывода мнемоник ?



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 26 марта 2010 21:06 · Поправил: Модератор
· Личное сообщение · #9

[Отладчики]

---
CodeF00 EDB
Features

Intuitive GUI interface
The usual debugging operations (step-into/step-over/run/break)
Conditional breakpoints
Debugging core is implemented as a plugin so people can have drop in replacements. Of course if a given platform has several debugging APIs available, then you may have a plugin that implements any of them.
Basic instruction analysis
View/Dump memory regions
Effective address inspection
The data dump view is tabbed, allowing you to have several views of memory open at the same time and quickly switch between them.
Importing of symbol maps
Plugins
* Search for binary strings
* Code Bookmarks
* Breakpoint management
* Check for updates
* Environment variable viewer
* Heap block enumeration
* Opcode search engine plugin has basic functionality (similar to msfelfscan/msfpescan)
* Open file enumeration
* Reference finder
* String searching (like strings command in *nix)
* Hardware Breakpoints
Написан на Си++ с использованием библиотек Qt (не ниже 4.5) и boost (не ниже 1.35)
Лицензия GPL-2
Сайт разработчика

Clerk пишет:
А зачем дизасм нужен, ну кроме вывода мнемоник ?

Странный вопрос. Очень странный для такого опытного человека. Зачем мне мнемоники для статического анализа? Мне на них по барабану порой. Интересуют идентификаторы, разбиение инструкций по группам, флаги которые изменяет/может изменять/влияют на результат/могут влиять на результат. Также это относится к проблемам деобфускации и обфускации кода. Мнемокод - это только для человека. Программа должна работать на более низком уровне.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 26 марта 2010 21:22 · Поправил: Модератор
· Личное сообщение · #10

Mediana by Mikae

Isaev пишет:
А отпишитесь кратко, кто что использовал в каких проектах и почему именно его, а не другой?

Потому что знаю немного автора, знаю что работа была проделана огромная (учтены ошибки документации, учтена не 100% совместимость наборов инструкций процессоров разных производителей, отлажены сложные случаи). Использовать [s]можно[s] нужно и по другим причинам: поддержка x64, разбиение на группы, определение флагов с которыми связано действие инструкции, возможность получить идентификатор инструкции (есть и в UDIS), возможность получить полную информацию об операндах, само собой длина инструкции и префиксы.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 26 марта 2010 23:26
· Личное сообщение · #11

progopis
> Очень странный для такого опытного человека.
Как всегда интересно ваше мнение
> Мнемокод - это только для человека.
В машинном коде мнемоник нет.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 27 марта 2010 00:20
· Личное сообщение · #12

Clerk пишет:
В машинном коде мнемоник нет.

Опять срач на тему терминов? Какой же вы дотошный. Наверно преподом работаете.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 марта 2010 02:18
· Личное сообщение · #13

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



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 27 марта 2010 08:24
· Личное сообщение · #14

Если под графом имеется в виду разбиение кода на дерево, то эту задачу надо решать связкой дизассемблер+анализатор (который в частности содержит эмулятор). Задача обработки даже элементарных switch-таблиц не является очень уж тривиальной. Даже в IDA 5.5 можно скормить пример, когда IDA будет дизассемблировать данные, а начало таблицы будет указано на код. И что самое смешное, никакой обфускации, просто оптимизация компилятора MS VC++. Термин "дизассемблер" лично для меня означает лишь получение информации об инструкции, желательно как можно более полной. Анализ группы инструкций производит "анализатор". Эмулятор в данном случае это не тупая виртуальная машина, ведь не будешь же перебирать весь диапазон значений регистров, на это просто уйдёт огромное кол-во времени, надо ловить контроль диапазонов, работу с виртуальными функциями ООП языков и т.д. Вот как раз анализатор для медианы я сейчас и пишу. Это основное над чем я работаю в последнее время.

И если проблема стоит именно в неполноте получения информации об инструкциях, то существует отличная возможность написать об этом автору. Если же проблема в навязывании дизассемблеру функций, какими он обладать не должен (во всяком случае в моём понимании), то тут уж не знаю.



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 30 марта 2010 16:12 · Поправил: HandMill
· Личное сообщение · #15

[Движки для установки перехватов]

---
0x48k-apihook
Движок для установки перехватов.
Написана на c
Некогда ссылка на закачку
Увы, покаместь описание с хэллкнайц не доступно(хотя по сорцам и так всё понятно), как будет доступно - исправлю пост.

---
advApiHook
Движок для установки перехватов. Код может быть скомпилирован для приложений режима уровня пользователя и уровня ядра.
Написана на c и delphi
как это работает
Делфийный вариант, c вариант

---
EasyHook
This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment like C# using Windows 2000 SP4 and later, including Windows XP x64, Windows Vista x64 and Windows Server 2008 x64. Also 32- and 64-bit kernel mode hooking is supported as well as an unmanaged user-mode API which allows you to hook targets without requiring a NET Framework on the customers PC. An experimental stealth injection hides hooking from most of the current AV software.
Написана на c++.
SDK поддерживает c++, c#
Лицензия LGPL
Сайт проекта
Последнее обновление EasyHook 2.6 Stable Mar 8 2009. Судя по всему проект жив.

---
MinHook
As people who are interested in Windows API hooking know, there is an excellent library for it by Microsoft named 'Detours'. It's really useful, but its free edition (called 'Express') doesn't support x64. Its commercial edition (called 'Professional') supports x64, but it's too expensive for me. It costs US$ 10,000, Microsoft says.
Написана на c
SDK поддерживает c/c++
Лицензия BSD
Статья об этой библиотеке

---
NCodeHook
N-CodeHook is a small template based C++ library which allows you to hook into functions via inline patching.
Написана на c++
SDK поддерживает c++
Страничка проекта, Контакты
Проект судя по всему жив - автор применяет эту библиотеку в IDA Stealth.

---
Ultimate Hooking Engine
This engine is very simple to use and is designed to be used by everyone that need to hook something, all that is required to hook certain target is carfully crafted hooking dll with certain exports, actually exports are used to locate API that you want to hook.
Написана на ассемблере(tasm32)
SDK поддерживает ассемблер, c/c++
Страничка автора
Врядли будут какие-то обновления.

---
Trappola/Nektra’s hook engine for Windows
Движок для установки перехватов.
Написана на c++
Лицензия GNU LGPL
Блог автора, Пост в блоге по поводу сабжа
Думаю автор обновит сабж если ему предоставить багрепорт.

---
DLL Injection Framework
Движок для установки перехватов и внедрения библиотек.
Написана на c++
Лицензия GNU GPL
Дневник автора, Пост по поводу сабжа
Врядли будут какие-то обновления.

---
NtHookEngine
NtHookEngine is a powerful x86/x64 mini hook-engine
Написана на с
Лицензия GNU GPL
Домашняя страничка автора, Авторская статья об этой библиотеке с примерами и исходниками
Думаю автор обновит сабж если ему предоставить багрепорт.

-----
все багрепорты - в личные сообщения





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 31 марта 2010 17:02 · Поправил: BoRoV
· Личное сообщение · #16

[Движки для установки перехватов]

---
yzHookLib
Движок для установки перехватов.
Написан на асме
Блог автора, Пост в блоге по поводу сабжа
Врядли будут какие-то обновления.

-----
Лучше быть одиноким, но свободным © $me




Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 16 июня 2010 01:25
· Личное сообщение · #17

[Api hook & Dll Inject]

Magic Api Hook Engine v1.0 -
This is a simple all around process Api hooker and Dll Injector.
UserMode(Ring3) just for WinNT family
Написан на delphi
Date: 2006.04.24
--> Сайт автора <--



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 29 июня 2010 17:28
· Личное сообщение · #18

rku - тулза для удаления этого унылого говна из системы



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 10 сентября 2010 11:18
· Личное сообщение · #19

BeaEngine попробовал, остался очень доволен, главное проэкт жив и обновляеца

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 19 сентября 2010 17:48 · Поправил: Clerk
· Личное сообщение · #20

VodoleY
Сразу как двиг IDP был выложен на паблик и технология описана, патч перестал существовать - это удел школоты, не способной написать трап-процессинг. Патч удел времён эмсирема. Сейчас это абсолютно не актуально. Даже на васме я запретил его обсуждать.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 08 декабря 2010 17:02
· Личное сообщение · #21

dsmhelp.narod.ru/ Disassemble Help Library

Здесь вы можете скачать библиотеку Disassemble Help Library с дизассемблером, и примерами использования. Одинаково хорошо дизассемблируется 16-битный,32-битный и 64-битный код. В примерах использования есть простой файловый дизассемблер и небольшая программка в которой можно одинаково дизассемблировать и ассемблировать отдельные инструкции.

В данное время поддерживает практически все документированые наборы инструкций Intel64/AMD64, Basic,System,SSE,SSE2,SSE3,SSSE3,SSE4,SSE4A,MMX,FPU,3DNOW,VMX,SVM,AVX,FMA3,FMA4 и XOP. Дизассемблер довольно надёжный, проверялся при создании гигантских листингов более 100 Мб. К библиотеке прилагается очень подробная HTML справка.

Пожалуй единственный минус это то, что работа возможна только под управлением Win64, это не разрешимая проблема для большей части компьютеров купленных 5 лет назад и более старых. Самые первые компьютеры с 64-битными процессорами AMD64, появились в продаже в 2003 году, и пентиумы с Intel64 в 2004 году. Но пожалуй если говорить о назначении программы, то она конечно далеко не для рядовых пользователей, которые обычно считают, что если к Интернету компьютер можно подключить то и обновка не нужна.

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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 09 декабря 2010 05:11
· Личное сообщение · #22

Попадаются с исходниками - вобщем солянка, но можно и полезное извлечь
_www.hacker-soft.net/Class/



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 09 декабря 2010 14:45
· Личное сообщение · #23

Ratinsh, вы не могли бы чётко разделить где там движки для RE/смежного чего-то с RE, а где фуфло, и оформить нормально. Мутный ресурс какой-то. Свалок исходников и в других местах предостаточно.

-----
все багрепорты - в личные сообщения




Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 10 декабря 2010 01:23
· Личное сообщение · #24

Предлагаете стать путеводителем на чужом празднике жизни, то бишь свалке...
Проще ссылку удалить, если не в радость оказалась..

Вот там углядел, если интересно
www.hacker-soft.net/Soft/Soft_15144.htm

WinAppDbg module for Python
The WinAppDbg python module allows developers to quickly add Windows application debugging facilities to your Python scripts.
What is WinAppDbg?
The WinAppDbg python module allows developers to quickly code instrumentation scripts in Python under a Windows environment.
It uses ctypes to wrap many Win32 API calls related to debugging, and provides an object-oriented abstraction layer to manipulate threads, libraries and processes, attach your script as a debugger, trace execution, hook API calls, handle events in your debugee and set breakpoints of different kinds (code, hardware and memory). Additionally it has no native code at all, making it easier to maintain or modify than other debuggers on Windows.
The intended audience are QA engineers and software security auditors wishing to test / fuzz Windows applications with quickly coded Python scripts. Several ready to use utilities are shipped and can be used for this purposes.
Current features also include disassembling x86 native code (using the open source diStorm project, see ragestorm.net/distorm/), debugging multiple processes simultaneously and produce a detailed log of application crashes, useful for fuzzing and automated testing.

winappdbg.sourceforge.net/
winappdbg.sourceforge.net/Tools.html
winappdbg.sourceforge.net/GettingStarted.html#download
sourceforge.net/projects/winappdbg/
sourceforge.net/projects/winappdbg/files/WinAppDbg/1.4/



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 24 января 2011 03:13
· Личное сообщение · #25

пара статей, мож пригодится
www.codeproject.com/KB/DLL/CreateYourProxyDLLs.aspx
www.codeproject.com/KB/DLL/ReplaceWindowsSocketsDLLs.aspx
ну и читаем там коменты



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 07 февраля 2011 01:12
· Личное сообщение · #26

Было не было, мож пригодится

www.codenet.ru/progr/cpp/fluke.php
Что такое Fluke?
Среди общего множества статей и библиотек в интернете я еще не встречал ни одного удобного и наглядного средства,
которое бы позволяло перехватывать, и управлять входными и выходными параметрами, любого типа функций,
как импортируемые функции в приложение, так и функции находящиеся внутри исполняемого процесса.
Проект Fluke как раз заполняет собой это упущение. Его исполнение разбито на три части, и каждая строго отвечает за свой функционал.
Оригинал:
gzproject.ru/wiki/index.php/HOWTO-Fluke
gzproject.sourceforge.net/wiki/Fluke
gzproject.sourceforge.net/wiki/IOFluke

https://gzproject.svn.sourceforge.net/svnroot/gzproject/trunk/library/
https://gzproject.svn.sourceforge.net/svnroot/gzproject/tags/library-1 .0.0
https://gzproject.svn.sourceforge.net/svnroot/gzproject/tags/ConsoleDi ablo2-20020630

эти из текста
www.codeproject.com/dll/apihijack.asp
rsdn.ru/article/baseserv/apicallsintercepting.xml
rsdn.ru/article/baseserv/IntercetionAPI.xml
www.securitylab.ru/contest/212085.php



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 28 февраля 2011 02:23
· Личное сообщение · #27

Если интересно (не знаю было-не было)
www.reversinglabs.com/products/TitanMist.php
www.reversinglabs.com/products/TitanEngine.php



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 28 февраля 2011 07:34
· Личное сообщение · #28

Ожил старый проект - мож для чего в помощь
StraceNT v0.9 January 30, 2011
www.intellectualheaven.com/default.asp?BH=StraceNT
https://github.com/ipankajg/ihpublic
download
https://github.com/ipankajg/ihpublic/zipball/master



Ранг: 24.4 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 28 марта 2011 20:53 · Поправил: GoldFinch
· Личное сообщение · #29

[Движки для установки перехватов]

C++ RCE Library
Библиотека для установки перехватов
Написана на VC++2010, поддерживается VC++2010
Лицензия MIT
https://code.google.com/p/cpp-rce-lib
Последнее обновление - март 2011. Проект скорее жив чем не-жив.



Ранг: 47.1 (посетитель), 2thx
Активность: 0.030
Статус: Участник

Создано: 05 апреля 2011 14:43 · Поправил: Vol4ok
· Личное сообщение · #30

Еще одна либо для установки перехватов.

1. libsplice
2. Краткое описание/возможности/фичи.
- поддержка х86 и х64
- поддкржка и user и kernel mode
- подмена с инструкций с относительными переходами на расстояние до 2ГБ
- поддержка повторного перехвата
- отслежвивает наличие int3 и ret перехватываемом коде
- легкий и написан на чистом С

3. Язык программирования: С
4. GPL3
5. http://code.google.com/p/libsplice/
6. Какая-либо информация о проекте: писался для проекта opendbg
дата последнего обновления: 2009
жив ли вообще проект: В принципе жив, но мне нет времни его вести.

ЗЫ: по просьбе HandMill — сделать сравнение с библиотекой easyhook:
Я не использовал easyhook, поэтому я не тот человек который должен сравнивать.

Я оочень бегло глянул easyhook, на предмет интересующих меня в ней вопросов, а именно дизасм, с способ установки хуков, особенно в х64.
По дизасму
libsplice: у меня используется, допиленный мною до х64, ldasm от ms-rem
easyhook: я был удивлен, от уведенного
Code:
  1. ; This code was initially generated by IDA Pro 5.0, by disassembling the machine
  2. ; code of the x86 ILD engine.

а дальше идет грмоздкий код выдранный из иды O_o

способ установки хуков:
libsplice: в х64 использует jump [mem64], в сумме занимает 14 байт, для x86 — 5 байтный клаасический джамп.
easyhook: использует mov[imm64] + jump[reg] (если я конеш правильно правильно задизасмил в уме эту строку — 0x48, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0), заменяет 12 байт, единственное что мне не понятно как он сохраняет значение регистра делая mov... Также я не совсем понял, но походу для х86 там тоже хук 12 байт занимает.

Прочие вещи которые я заметил:

Еще они не поддерживают подмену инструкций с относительными адресами
Code:
  1. "Hooking far jumps is only supported if they are the first instruction."

libsplice поддерживает, но не факт что всегда правильно.

Еще в easyhook какие то хитрые мутки с синхронизацией я не вникал, тогда как в libsplice серьезной синхронизации не используется, используются лишь приемы которые позволяют минимизировать вероятность выполнения подменяеймого кода, т. е. всегда существует вероятность крэша, хоть и крайне низкая.

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

В easyhook есть снятие хуков, на сколько я поняд (LhUninstallHook), не вникал правда каких. libsplice не умеет снимать хуки. Хотя безопасно снять хуки в ядре — я считаю что это даже теорестически невозможно, даже имея целый арсенал синхропримитив, причем снятие имеет куда большую вероятность креша нежели установка.

Еще я полагаю что easyhook более стабильный, т к libsplice тестировался очень малым числом людей.

| Сообщение посчитали полезным: HandMill
. 1 . 2 . 3 . 4 . >>
 eXeL@B —› Дневники и блоги —› engines
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати