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

 eXeL@B —› Основной форум —› Отлов модификации пациентом
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 10:01
· Личное сообщение · #1

Вопрос такой каким еще образом (кроме Тsl) пациент(прога) может определить наличие изменений (Ну буквально 2 байтика где то в сердине ) в своем программном коде до начала исполнения с EP.



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

Создано: 27 июня 2007 10:06
· Личное сообщение · #2

насколько мне известно при загрузке dll, происходит событие онлоад, которое может этим длл обрабатываться



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 10:13
· Личное сообщение · #3

подробнее если можно.... и как отловить?
Пытался так не получилось ставим бряк на load dll d ольке после первого срабатывания ставим бряк на секцию text и фиг пишет примерно следующее:
R6034
An application has made an attemp to load the C runtime library incorrectly.



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

Создано: 27 июня 2007 10:40
· Личное сообщение · #4

Рихтер

В DLL, может быть лишь одна функция входа/выхода Система вызывает ее в некоторых ситуациях (о чем речь еще впереди) сугубо в информационных целях, и обычно она используется ULL для инициализации и очистки ресурсов в конкретных процессах или потоках Если Вашей DLL подобные уведомления не нужны, Вы не обязаны реализовывать эту функцию. Пример — DLL, содержащая только ресурсы. Но если же уведомления необходимы, функция должна выглядеть так:
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// DLL проецируется на адресное пространство процесса
break;
case DLL_THREAD_ATTACH:
// создается поток
break;
case DLL_THREAD_DETACH:
// поток корректно завершается
break;
case DLL PROCESS_DETACH
// DLL отключается от адресного пространства процесса
break;
}
return(TRUE);
// используется только для DLL_PROCESS_ATTACH
}

NOTE:
При вызове DllMain надо учитывать регистр букв Многие случайно вызывают DLLMain, и это вполне объяснимо- термин DLL обычно пишется заглавными буквами. Если Вы назовете функцию входа/выхода не DllMain, а как-то иначе . (пусть даже только один символ будет набран в другом регистре), компиляция и компоновка Вашего кода пройдет без проблем, но система проигнорирует такую функцию входа/выхода, и Ваша DLL никогда не будет инициализирована.

Параметр hinstDll содержит описатель экземпляра DLL, Как и hinstExe функции (w)WinMain, это значение — виртуальный адрес проекции файла DLL на адресное пространство процесса. Обычно последнее значение сохраняется в глобальной переменной, чтобы его можно было использовать и при вызовах функций, загружающих ресурсы (типа DialogBox или LoadString), Последний параметр, fImpLoad, отличен от 0, если DLL загружена неявно, и равен 0, если она загружена явно.

Параметр fdwReason сообщает о причине, по которой система вызвала эту функцию. Он принимает одно из четырех значений: DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, DLL_THREAD_ATTACH или DLL_THREAD_DETACH. Мы рассмотрим их в следующих разделах.

NOTE:
Не забывайте, что DLL инициализируют себя, используя функции DllMain. К моменту выполнения Вашей DllMain другие DLL в том же адресном пространстве могут не успеть выполнить свои функции DllMain, т. e. они окажутся неинициализированными. Поэтому Вы должны избегать обращений из DllMain к функциям, импортируемым из других DLL. Кроме того, не вызывайте из DllMain функции LoadLibrary(Ex) и FreeLibrary, так как это может привести к взаимной блокировке.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 10:45
· Личное сообщение · #5

И простите как все выше сказанное пересекается с пропатченной секцией text?



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

Создано: 27 июня 2007 10:47
· Личное сообщение · #6

это как один из вариантов ответа на вопрос
при инициализации длл она проверяет прогу родителя и если ее патчили то ...



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 27 июня 2007 10:49
· Личное сообщение · #7

Medsft пишет:
подробнее если можно.... и как отловить?
Пытался так не получилось ставим бряк на load dll d ольке после первого срабатывания ставим бряк на секцию text и фиг пишет примерно следующее:
R6034
An application has made an attemp to load the C runtime library incorrectly.


Для начала отбрось самый простой случай.
В настройках кроме бряка на load dll поставь system breakpoint.
Сразу как открываешь жертву глянь на карту модулей (Alt+E).
Если там уже есть подозрительные библиотеки от жертвы, значит они прошли инициализацию (то есть выполнился код по EntryPoint).
Проверь этот код.

-----
Всем привет, я вернулся




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 11:00
· Личное сообщение · #8

Bitfry пишет:
Проверь этот код
Уже более понятно нашлась dll c названием примерно debugfunc.dll что делать дальше?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 11:02
· Личное сообщение · #9

Да не мог код выполнится....(наверное мне так кажется .... на еiр стоит jmp eip)




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

Создано: 27 июня 2007 11:05
· Личное сообщение · #10

Ну так загружай длл и ставь бряк. Вот кстати и тема была:
ttp://www.exelab.ru/f/action=vthread&forum=5&topic=8706

-----
radio uno in ibisa ...





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 июня 2007 11:07
· Личное сообщение · #11

А что за такая страшная софтина? =)



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 11:30
· Личное сообщение · #12

Ara а ты в computerbild иногда поглядываешь? (там иногда хорошие шароварки попадаются от всяких бедных кодеров которые в силу отсутствия денег придумывают а не приобретают защиту) так в последнем номере прога есть для коррекции изображения с web-камеры.

Icelot и как же нам брякнутся в эту dll-ку из под родительского процесса а не через loaddll.exe?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 июня 2007 11:33 · Поправил: Ara
· Личное сообщение · #13

Может галку Break on new module (DLL) поставить?




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 27 июня 2007 11:36
· Личное сообщение · #14

Medsft пишет:
Да не мог код выполнится....(наверное мне так кажется .... на еiр стоит jmp eip)

Ну код отработал и за'jmp'ил себя =P



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 11:37
· Личное сообщение · #15

Ну что уж ты Ara мнеж лет то уж ближе к 40 галку я давно поставил библа инициализуется как то до этого.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 11:40
· Личное сообщение · #16

HoBleen пишет:
Ну код отработал и за'jmp'ил себя =P
ни х.. не понятно какой код ? dll-ки так я и спрашиваю как

Medsft пишет:
Icelot и как же нам брякнутся в эту dll-ку из под родительского процесса а не через loaddll.exe?





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 июня 2007 11:43 · Поправил: Ara
· Личное сообщение · #17

Ну хардваре бряк на измененные байты попробуй поставь и перезапусти прогу.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 27 июня 2007 11:47
· Личное сообщение · #18

В kernel32.dll поставь бряки на
LoadLibraryA
LoadLibraryExA
LoadLibraryExW
LoadLibraryW

-----
Nulla aetas ad discendum sera




Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июня 2007 11:48
· Личное сообщение · #19

Ты случайно сегменту кода атрибуты на RWE не поменял? Смени на RE =)



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 12:06
· Личное сообщение · #20

Ara пишет:
Ну хардваре бряк на измененные байты попробуй поставь и перезапусти прогу
- не подходит

jkhan пишет:
Ты случайно сегменту кода атрибуты на RWE не поменял? Смени на RE =)
у туда менял и сюда.

Flint пишет:
В kernel32.dll поставь бряки на
LoadLibraryA
LoadLibraryExA
LoadLibraryExW
LoadLibraryW

Поставить то можно но эта самая dll-ка заугружается в пространство уж не знаю как но до того как оля начинает ловить "break on new module dll"




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 27 июня 2007 12:10
· Личное сообщение · #21

А в Оле стоит Make first pause at: System breakpoint ?

-----
Nulla aetas ad discendum sera




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 27 июня 2007 12:20
· Личное сообщение · #22

Medsft пишет:
Уже более понятно нашлась dll c названием примерно debugfunc.dll что делать дальше?

В принципе быстрее всего глянуть на стартовую функцию в IDA.
Но мне не нравится название этой длл. Не к добру.

Полное название программы в студию.

-----
Всем привет, я вернулся





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 июня 2007 13:39
· Личное сообщение · #23

Выложи вообще прогу, чего гадать-то...




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 27 июня 2007 13:55
· Личное сообщение · #24

Поставь сс на ер, а потом замени обратно.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 27 июня 2007 14:22
· Личное сообщение · #25

HoBleen пишет:
Поставь сс на ер

Ну и что, получит он системную ошибку 80000003. Олька - этож не СофтАйс.

-----
Всем привет, я вернулся





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 27 июня 2007 14:48 · Поправил: Hellspawn
· Личное сообщение · #26

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

з.ы. полюбому в длл, больше негде выкладывай прогу...

-----
[nice coder and reverser]




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 15:09
· Личное сообщение · #27

Выходил на секундочку говорите откуда качать лучше туда и положу но с условием решение задачки в пост.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 июня 2007 15:20
· Личное сообщение · #28

ttp://webfile.ru/1452931 Размер: Чуть меньше 2 мегов




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 27 июня 2007 16:09
· Личное сообщение · #29

Кароче. Я изменил тут 0041295B JE 00412BBF на jmp прога вначале ругалась "An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information." теперь че-то перестала. Кстати если ее переименовать то она тож ругается
При этом в переименованной/исправленной проге 3 раза (в нормальной 2 раза) загружается либа C:\ProgramFiles\VideoChimeraHome\Bins\Win32Release\MSVCR80.dll с именем MSVCR8_1 (в нормальной 2 раза MSVCP80). Так вот она загружается с Base = 00340000 и MessageBox идет оттуда.
Буду копать дальше
P.S ты где код правил?

-----
Nulla aetas ad discendum sera





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 июня 2007 16:33
· Личное сообщение · #30

Пропатчил 1 байт в секции кода и 1 байт строкчу где-то...Робит также как и робила.


. 1 . 2 . >>
 eXeL@B —› Основной форум —› Отлов модификации пациентом
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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