purebasic.info

PureBasic forum
Текущее время: Вт июл 17, 2018 10:33 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: плагин olly
СообщениеДобавлено: Пн авг 23, 2010 8:49 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
В аттаче плагин для ollydbg110, который ищет в коде стандартные пуриковские функции и помечает их label'ами и коментариями с их названием.

За правильность Olly_PureBasic.ini не отвечаю, так как он сгенерирован автоматически и не доконца :P
скрин


Вложения:
Olly_PureBasic.rar [12.89 KiB]
Скачиваний: 297


Последний раз редактировалось puremaster Пн авг 23, 2010 11:52 am, всего редактировалось 2 раз(а).
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 23, 2010 8:55 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11205
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Изображение

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 23, 2010 8:56 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
минутку.

А, так это DLL. Единственное что не проверил.
В olly DLLки грузятся через отдельную программу, в этом беда. Плагин в этой проге и пытается искать :)
Потом доделаю.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 23, 2010 11:48 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Обновил первый пост, теперь без ошибок.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 26, 2010 7:59 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
У меня вот вопрос к уважаемому puremaster
- а ты пробовал реверсить Пуриковский компилятор?
Если конкретнее, то меня интересуют дополнительные данные, которые в процессе компиляции добавляются в экзешник, то есть то что идентифицирует экзешник скомпиленый в PureBasic.
Мне известно только то, что идентификация происходит не по именам секций, скорее всего по какой-то сигнатуре...
Просто не хочется использовать всякие PEscriber'ы, а так то можно бы было легко пропатчить экзешник после компиляции.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 26, 2010 9:44 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11205
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Sp01LeR писал(а):
то есть то что идентифицирует экзешник скомпиленый в PureBasic
Вроде ничего такого не добавляется.
Разве что в датасекции есть слова, начинающиеся а PB_
Но они добавляются при использовании гаджетов и скорее всего, описывают классы дочерних окон. Но их добавляют библиотеки функций, а не компилятор.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 26, 2010 11:31 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6321
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
Sp01LeR писал(а):
то есть то что идентифицирует экзешник скомпиленый в PureBasic.

Хотелось бы напомнить, что ЕХЕ шник компилируется все же FASM ом, и потому определяется некоторыми PE анализаторами именно так или вообще ни как.
Пётр писал(а):
Разве что в датасекции есть слова, начинающиеся а PB_

Эти символы могут быть легко заменены на другие после компиляции ( менял для пробы на Cpp), абсолютно не влияет на работоспособность программы.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 26, 2010 11:43 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Такие проги как peid и petools определяют на чем написана прога по первым байтам из "EntryPoint" , там типа инициализация памяти и тд. Следущие сигнатуры легко определят pb:

petools:
[PureBasic=68::::::::680000000068::::::00E8::::::0083C40C6800000000E8::::::]
[PureBasicDLL=837C24080175198B442404A3::::::::E8::::::::FF35::::::::E8]

peid:
[PureBasic]
signature = 68 ?? ?? ?? ?? 68 00 00 00 00 68 ?? ?? ?? 00 E8 ?? ?? ?? 00 83 C4 0C 68 00 00 00 00 E8 ?? ?? ??
ep_only = true
[PureBasicDLL]
signature = 83 7C 24 08 01 75 19 8B 44 24 04 A3 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 35 ?? ?? ?? ?? E8
ep_only = true



И чтобы спрятать PBпрогу от "идентифицирования", достаточно слегка подправить эти байты через ключи /asm /reasm.

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

В остальном ничего необычного нет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 7:30 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Значит ты считаешь, что основной зацепкой для анализатора будет только сигнатура на точке входа? В принципе я так и предполагал, правда остались все же сомнения, что компилятор может еще дополнительно пару-тройку мусорных байт запихать в код после линковки...
puremaster писал(а):
В остальном ничего необычного нет.

Для меня одна необычность все-таки присутствует. Дело в том, что сигнатуру PureBasic'а нужно спрятать не от программ типа PeID'а(ну и тем более не от человека), а от тупых второсортных антивирусов, поэтому замена нескольких байт или же перемещение точки входа на новую секцию с последующим джампом на оригинальный адрес тут не совсем подходят - очень подозрительно для анализатора... В идеале хотелось бы конечно полностью имитировать идентификацию Fasm'а: там секция ".code" и соответственно точка входа находятся по смещению 00002000(а не 00001000 как в пурике), и стандартная сигнатура по первым 10 байтам для EXE'шника выглядит как "6A006800104000680010".
Но провернуть такой фокус с ребилдом мне пока не под силу :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 12:43 pm 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Цитата:
а от тупых второсортных антивирусов
ого какие разборчивые антивирусы :)

Цитата:
имитировать идентификацию Fasm'а: там секция ".code" и соответственно точка входа находятся по смещению 00002000

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

Если очень надо.. запускай pbcompiler.exe /COMMENTED kodprogrammi.pb
В получившемся файле PureBasic.asm переименовывай
Код:
1
section '.code' code readable executable


на
Код:
1
section '.text' code readable executable



Теперь у тебя не 3 секции, а 2 - text и data.

Далее после PureBasicStart: вводишь свою сигнатуру "db 6Ah,00h,68h,00h,10h,40h,00h,68h,00h,10h" что есть 3 push, и на всякий случай add esp,12 после. Только это никакая не сигнатура.

pbcompiler.exe kodprogrammi.pb /REASM

Готово.

Ах да, в уже готовой программе .text лучше заменить на .flat :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 03, 2010 6:55 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
puremaster писал(а):
ого какие разборчивые антивирусы

Ага, если бы! Даже стандартный Мелкософтовский антивирь любит визжать на проги упакованные UPX'ом. Это у Касперыча с БитДефендером и НОДом вылизанные алгоритмы проактивки и эмуляция исполняемого кода в памяти... А у второсортных, как правило, по старинке - вся проверка в основном по сигнатурным базам идет. Особенно бешенная Avira удивляет - этот даже на JavaScript'овый цикл рычит.
Короче, параноя полная :)

Чтобы не мучить тебя своим ламерскими вопросами, я уже сам помучался в свободное время с Олькой и ExeInfoPE. Еще возникло пару вопросов:
- можно ли без джампа пропустить некоторую часть комманд? Например "db 00,00,00" в начале точки входа...
- какую функцию можно можно безопасно вызвать из kernel32, чтобы не было потом эксепшена или не глюканул memset - по дефолту это вроде стартовая функция вызова при компиляции в режиме WinGUI?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 03, 2010 9:38 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Цитата:
Особенно бешенная Avira удивляет
Точно, она работает по принципу "убить всё, лишь бы не было войны" :)

Цитата:
- можно ли без джампа пропустить некоторую часть комманд? Например "db 00,00,00" в начале точки входа...
Придется левую DLLку написать с таким кодом:
test.dll
Код:
1
2
3
4
5
6
7
8
9
10
11
12
ProcedureDLL MyFunc()
        If ErrorAddress()=$401000
                !push 0x401003          ;$401003 - сразу после db 00,00,00
                !retn
        Else
                OnErrorDefault()
        EndIf
EndProcedure
 
ProcedureDLL AttachProcess(Instance)
        OnErrorGoto(@MyFunc())
EndProcedure



test.exe
Код:
1
2
3
4
5
Import "test.lib"
        MyFunc()
EndImport
A=@MyFunc()
MessageBox_(0,"test","test",0)


Прежде чем перейти на "точку входа", при загрузке сначала выполнится AttachProcess в dll и поставит обработчик исключений.


Цитата:
какую функцию можно можно безопасно вызвать из kernel32, чтобы не было потом эксепшена или не глюканул memset

Если только memset.. его вообще можно убрать - в pb он лишь запоняет нулями участок памяти где и так только нули :)
Из функций например SetUnhandledExceptionFilter_(?label), но легче использовать PBшные функции OnError.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 03, 2010 12:17 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11205
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Sp01LeR писал(а):
у Касперыча
Касперыч ещё тот параноик!
На UPX ругается безо всякой причины на это! А вот НОД32 молчит.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 04, 2010 9:36 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11205
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Выложил прогу на пурике на одном из фрумов чтобы угадали какой компилятор я использовал.
Они утверждают что C++ из студии мелкософта. :) :lol:

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 08, 2010 7:29 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
puremaster писал(а):
Придется левую DLLку написать с таким кодом:

Ну, как всегда - все гениальное просто...
Спасибо!

Пётр писал(а):
Они утверждают что C++ из студии мелкософта.


А вообще мелкософтовский компилятор трудно подделать - он при компиляции добавляет закодированный кусок данных с приватной инфой, типа серийников биоса, харда и т.п.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB