Сейчас на форуме: subword, rtsgreg1989, zds (+10 невидимых)

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


Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

Functions Searcher + SRC (VB Decompiler plugin)

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

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

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

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

653a_17.04.2008_CRACKLAB.rU.tgz - FunctionSearcher.zip

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




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

Создано: 17 апреля 2008 18:01
· Личное сообщение · #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 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

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

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

-----
Пиво, сиськи, транс





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

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

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

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





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


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


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


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

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


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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 51.5 (постоянный), 16thx
Активность: 0.040.01
Статус: Участник

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

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

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




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

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

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

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

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

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

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





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

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

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

-----
Yann Tiersen best and do not fuck





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

[double]

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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

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




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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

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

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




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

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

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

исправлюсь

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

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

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

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

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





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


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

57c1_19.04.2008_CRACKLAB.rU.tgz - my.exe

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 19 апреля 2008 18:18
· Личное сообщение · #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;

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




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


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

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

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


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

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


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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





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

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

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




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

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

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




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 апреля 2008 10:36
· Личное сообщение · #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. А еще лучше вообще не читать, а сразу работать с указателем.

-----
Yann Tiersen best and do not fuck





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 20 апреля 2008 14:57
· Личное сообщение · #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 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

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

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




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

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

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

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

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

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

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

-----
Yann Tiersen best and do not fuck





Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

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

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

-----
Уважайте других и пишите грамотно.





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

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

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


К сожалению у меня щас нет времени на этот проект. Потому и ищу того кто бы за него взялся.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!



 eXeL@B —› Основной форум —› Functions Searcher + SRC (VB Decompiler plugin)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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