eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: SDK (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Functions Searcher + SRC (VB Decompiler plugin)
Посл.ответ Сообщение


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 17 апреля 2008 14:27 New!
Цитата · Личное сообщение · #1

Functions Searcher + SRC (VB Decompiler plugin)

Вот решил выложить на шару сорцы поисковика функций для VB Decompiler'а

Изначально идея плагина состоит в поиске функций внутри любых EXE/DLL файлов
и передача их адресов в декомпилятор. Это дает возможность декомпилировать любые Native PE32 файлы
а не только Visual Basic'овские.

Но как-то идея нам с Женьком (ShackS) быстро надоела. И плагин оказался хоть и работоспособным но
до IDA ему еще далеко.

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

{ Атач доступен только для участников форума } - FunctionSearcher.zip

Ранг: 50.2 (постоянный)
Статус: Участник

Создано: 17 апреля 2008 18:01 New!
Цитата · Личное сообщение · #2

if Copy(Code,1,3)='ret' then Ext:=true;
if Code='add [eax], al' then Ext:=true;
if Code='invalid' then Ext:=true;
10 лет треш-угара?


Ранг: 260.3 (наставник)
Статус: Участник
PPC-PROTECT author

Создано: 17 апреля 2008 18:10 New!
Цитата · Личное сообщение · #3

о боже ты мой)) какой ужас))


Ранг: 533.6 (!)
Статус: Uploader
retired

Создано: 17 апреля 2008 18:45 New!
Цитата · Личное сообщение · #4

А под De Decompiler оно должно работать(у меня не работает)


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 17 апреля 2008 18:48 New!
Цитата · Личное сообщение · #5

censor пишет:
10 лет треш-угара?


Ты бы эти строки написал иначе? Это планировалось как времянка до портирования с VB определения конца процедур. Потом я на это просто забил так как и так работает.


-= ALEX =- пишет:
о боже ты мой)) какой ужас))


Очень информативный пост.

borov пишет:
А под De Decompiler оно должно работать(у меня не работает)


Под 2.0 - да. Где скачать 2.0 не знаю - ищи в сети.


Ранг: 273.5 (наставник)
Статус: Участник
Advisor

Создано: 17 апреля 2008 20:48 New!
Цитата · Личное сообщение · #6

GPcH пишет:
Где скачать 2.0 не знаю

Ну с этим..... понятно...
А вот где лайт версию 2.0 взять, не в курсе ????

Ранг: 49.4 (посетитель)
Статус: Участник

Создано: 17 апреля 2008 22:06 New!
Цитата · Личное сообщение · #7

Bronco пишет:
А вот где лайт версию 2.0 взять, не в курсе ????

да хоть здесь: хттп://dump.ru/files/p/p00440637/


Ранг: 533.6 (!)
Статус: Uploader
retired

Создано: 18 апреля 2008 00:10 · Поправил: borov New!
Цитата · Личное сообщение · #8

GPcH пишет:
Под 2.0 - да

У меня 2.0 lite, при выборе плагина выкидует

GPcH пишет:
Где скачать 2.0 не знаю - ищи в сети

А 2.0 Full в сети реально найти?


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 18 апреля 2008 06:31 New!
Цитата · Личное сообщение · #9

borov если задаешь вопрос, то ставь в конце соответствующий знак ? Иначе тема перерастет во флуд и все будут спрашивать: "borov а где ты нашел? Дай ссылку!"


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 18 апреля 2008 08:29 New!
Цитата · Личное сообщение · #10

Чтобы плагин работал нужно сначала в декомпиляторе открыть файл, а уже потом запускать плагин.
Само собой надо его сначала скомпилять.


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 18 апреля 2008 08:29 · Поправил: Модератор New!
Цитата · Личное сообщение · #11

[double]

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 18 апреля 2008 14:21 New!
Цитата · Личное сообщение · #12

GPcH пишет:
Под 2.0 - да. Где скачать 2.0 не знаю - ищи в сети.

Чет болтают что проэкт загнулся?


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 18 апреля 2008 15:08 New!
Цитата · Личное сообщение · #13

pavka пишет:
Чет болтают что проэкт загнулся?


Может не будем в теме про плагин обсуждать декомпилятор. Я про него уже все сказал на exetools. Повторяться не хочу.

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 18 апреля 2008 17:55 · Поправил: Модератор New!
Цитата · Личное сообщение · #14

GPcH пишет:
Я про него уже все сказал на exetools.

Там практический не бываю ;) так как уровень на сегодняшний день пожалуй из всех форумов данной тематики один из самых низких

Archer: там написано, что проект остановлен, о причинах распространяться желания нет, даже не спрашивайте.


Ранг: 533.6 (!)
Статус: Uploader
retired

Создано: 19 апреля 2008 00:14 New!
Цитата · Личное сообщение · #15

PE_Kill пишет:
если задаешь вопрос, то ставь в конце соответствующий знак ?

исправлюсь

GPcH пишет:
Само собой надо его сначала скомпилять.

а как подругому?! конечно скомпилил

GPcH пишет:
Чтобы плагин работал нужно сначала в декомпиляторе открыть файл, а уже потом запускать плагин.

все так и делал


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 19 апреля 2008 10:59 New!
Цитата · Личное сообщение · #16

borov пишет:
все так и делал


Проверь на тестовом проекте (в аттаче)

{ Атач доступен только для участников форума } - my.exe


Ранг: 116.6 (ветеран)
Статус: Участник

Создано: 19 апреля 2008 18:18 New!
Цитата · Личное сообщение · #17

GPcH пишет:
Но как-то идея нам с Женьком (ShackS) быстро надоела. И плагин оказался хоть и работоспособным но
до IDA ему еще далеко.

Мдяяя .... Стиль программирования со времен создания GHF Protector так и не изменился )
Взяли несколько публичный паскалевских исходника, добавили мегаанализатор
if Copy(Code,1,3)='ret' then Ext:=true;
if Code='add [eax], al' then Ext:=true;
if Code='invalid' then Ext:=true;

Вот и готов бюльбюльгюрюк...


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 19 апреля 2008 19:05 New!
Цитата · Личное сообщение · #18

dermatolog пишет:
Мдяяя .... Стиль программирования со времен создания GHF Protector так и не изменился )
Взяли несколько публичный паскалевских исходника, добавили мегаанализатор


Опенсорс всегда судить просто. Чтото мне подсказывает что в VMProtect полно заимствований. Просто о них не узнать так как нет публичных исходников.

Теперь что касается плагина. Какой смысл изобретать дизассемблер с нуля если уже есть отлаженный и стабильный? Тоже касается и структур PE формата. Если бы я переписал с нуля эти структуры врядли бы плагин стал лучше.

dermatolog пишет:
добавили мегаанализатор


Да, кроме как к этим трем If'ам и прицепиться не к чему, верно? А еще кто-то в асе говорил что ему плевать до моих проектов - нет же, в каждом топике про мои проекты вставляешь кусок грязи.

dermatolog пишет:
Вот и готов бюльбюльгюрюк...


Показал бы ты исходники "своего" пакера который ты "создал с нуля" в новых версиях VMP... вот уж где наверное сборище публичных исходников. Причем глючит со слов одного из твоих клиентов ужасно - ни один нестандартный EXE (без секции ресурсов например) упаковать не может.


Ранг: 1995.9 (!!!!)
Статус: Модератор
retired

Создано: 19 апреля 2008 19:31 New!
Цитата · Личное сообщение · #19

Не нравится мне что-то этот топик. Ну выложил человек и чо вы до него докопались? Не нравится-можно не юзать, тем более, что ничего конструктивного не предложили. Будет хотя бы ещё 1 попытка глумиться после этого поста-будет бан.


Ранг: 116.6 (ветеран)
Статус: Участник

Создано: 20 апреля 2008 05:20 · Поправил: Модератор New!
Цитата · Личное сообщение · #20

Было же ясно предупреждение написано. В баню поехал.


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 20 апреля 2008 10:36 New!
Цитата · Личное сообщение · #21

GPcH пишет:
Какой смысл изобретать дизассемблер с нуля если уже есть отлаженный и стабильный?

Он весьма неотлаженый и нестабильный. Посмотри на васме про это много было. Я и сам потратил больше недели компилируя Олькин дизасм, когда ремовский у меня переглючил. Был бы он щас, то конечно довел бы до ума.

GPcH пишет:
Тоже касается и структур PE формата.

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

По коду мне непонятна вот такая конструкция
asm
push pStr
push vlFnNumber
push vlNumber
push vlType
call vlPluginEngine;
mov ptrString,eax
end;
Не понимаю зачем тут асемблерная вставка это и Pascal'ем сделать можно.

Тот кусок, что тут всем так понравился
if Copy(Code,1,3)='ret' then Ext:=true;
if Code='add [eax], al' then Ext:=true;
if Code='invalid' then Ext:=true;

Написан в обход какой либо оптимизации. Т.к. это работа со строками, то тут должно быть минимум операций. А так программа проверит все 3 условия, даже если выполнится первое. Должно бы быть так:
if (Copy(Code,1,3)='ret') or (Code='add [eax], al') or (Code='invalid') then Ext:=true;

А т.к. флаг Ext нужен для прерывания цикла то можно сделать еще проще
if (Copy(Code,1,3)='ret') or (Code='add [eax], al') or (Code='invalid') then Break;

Ну а работа с буфером и битовыми масками конечно же еще лучше отразится на скорости выполнения.

Еще непонятна такая конструкция.
if not ReadProcessMemory(dword(-1), cPtr, @CmdBuff, 16, Readed) then Exit;
Если мы читаем память из собственного процесса, то можно заюзать функции CopyMem и CopyMemory. А еще лучше вообще не читать, а сразу работать с указателем.


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 20 апреля 2008 14:57 New!
Цитата · Личное сообщение · #22

PE_Kill

Наконецто пошла конструктивная критика Спасибо.

PE_Kill пишет:
Он весьма неотлаженый и нестабильный.

За несколько лет использования единственный баг который я нашел (и то сам, сообщать мне никто ни об одном баге не сообщал - следовательно у клиентов он не встречался) - это некорректная обработка флага 16 битного режима 66h (некорректное определение длины инструкции). Остальное все работает стабильно. В проекте он взят для простоты - так там и дизассемблера длин хватило бы.

PE_Kill пишет:
Структуры - да, голова хорошо их описал. А вот функции оптимизации, чистки и перестроения не всегда работают правильно, хоть и редко но неприятно.


В плагине только структуры и нужны Остальное просто удалять не стал.

PE_Kill пишет:
По коду мне непонятна вот такая конструкция
asm


Не знаю почему, но когда я объявляю как функцию vlPluginEngine и вызываю то после ее нормального вызова идет Access Violation. Возможно стек надо чистить как-то по особому, может объявлял не так. В общем пришел к тому что проще написать на асме.


PE_Kill пишет:
Тот кусок, что тут всем так понравился
Написан в обход какой либо оптимизации.


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

PE_Kill пишет:
А т.к. флаг Ext нужен для прерывания цикла то можно сделать еще проще


Согласен

PE_Kill пишет:
Еще непонятна такая конструкция.
if not ReadProcessMemory(dword(-1), cPtr, @CmdBuff, 16, Readed) then Exit;
Если мы читаем память из собственного процесса, то можно заюзать функции CopyMem и CopyMemory.


Там насколько помню идет проверка конца блока памяти. Если делать через ReadProcessMemory то ошибка чтения вылезала, если через CopyMem - нет. А вообще конечно все можно было бы оптимизировать. А за критику - спасибо!

PS: не появилось желающих продолжать проект?

Ранг: 352.4 (мудрец)
Статус: Участник
retired

Создано: 20 апреля 2008 15:29 New!
Цитата · Личное сообщение · #23

насколько я понял он рекурсивно ищет функции на которые есть call начиная с entry point? т.е. всякие callback etc идут лесом?


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 20 апреля 2008 15:53 New!
Цитата · Личное сообщение · #24

ssx пишет:
насколько я понял он рекурсивно ищет функции на которые есть call начиная с entry point? т.е. всякие callback etc идут лесом?


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


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 21 апреля 2008 14:00 New!
Цитата · Личное сообщение · #25

GPcH пишет:
Не знаю почему, но когда я объявляю как функцию vlPluginEngine и вызываю то после ее нормального вызова идет Access Violation.

Потому что функция должна быть объявлена как stdcall Delphi по дефолту делает паскалевский вызов через регистры.

GPcH пишет:
Там насколько помню идет проверка конца блока памяти. Если делать через ReadProcessMemory то ошибка чтения вылезала, если через CopyMem - нет.

Тогда нужно использовать функции проверки указателя, или как советуют на васме
try
/*обращаемся к памяти*/
except
/*Ошибка при обращении, выходим из функции*/
end;
Это максимально быстрый способ.

По поводу методы. Мне понравился метод как автор OllyDbg ищет функции, он расписывал это где то в хэлпах или на сайте уже не помню.


Ранг: 120.9 (ветеран)
Статус: Участник
Programmer and reverser

Создано: 22 апреля 2008 12:08 New!
Цитата · Личное сообщение · #26

Он эвристически там ищет. Да-да, я тоже где-то читал.


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 22 апреля 2008 12:15 New!
Цитата · Личное сообщение · #27

PE_Kill пишет:
По поводу методы. Мне понравился метод как автор OllyDbg ищет функции, он расписывал это где то в хэлпах или на сайте уже не помню.


К сожалению у меня щас нет времени на этот проект. Потому и ищу того кто бы за него взялся.
 eXeL@B —› Основной форум —› Functions Searcher + SRC (VB Decompiler plugin)

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS