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

 eXeL@B —› Вопросы новичков —› Обсудим ? топик не совсем новичка.
Посл.ответ Сообщение

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

Создано: 17 ноября 2006 09:28
· Личное сообщение · #1

В крякерстве программ , я конечно не новичок. Ломал ДОСовские программы до 98Windows. C Ольками,Дизасмами, Пе эксплоррерами не знаком ,да и вообще с технологиями профессионального крякерства. С появлением достойного Интернета, и кучи крякерских сайтов, вообще отпала необходимость ломать что ни будь самостоятельно, кроме специализированных профессиональных программ , типа (из последних ) Индийский АРМ для японского станка для установки радиоэлементов.
Но… Однажды меня заинтересовало взломать StarForce. Когда я его сломал, придумал (как мне кажется) оригинальный способ лома программ.

Суть его (способа лома) в следующем:

1. В исследуемой программе заменяются все данные kernel32.dll на _ernel32.dll ( также с
User32 , Advapi32 и т.п.по необходимости)
2. Пишется DLL _ernel32.dll, основная задача которой писать ЛОГ вызываемых функций.
Пример:
kernel32 $10001F56 InterlockedExchange $22223333
kernel32 $10001F64 InterlockedExchange $00000ED8
kernel32 $10001F81 GetModuleFileNameA $00000000
User32 $10001F8D EnumWindows
User32 $10001BD1 GetWindowThreadProcessId
kernel32 $10001BF3 OpenProcess $00000188
kernel32 $10001BFE CloseHandle
kernel32 $10001FB3 InterlockedExchange $00000EDC
User32 $10001FCD SetWindowsHookExA
User32 $10001FF6 GetMessageA
User32 $0040FC45 CallNextHookEx
User32 $10002002 UnhookWindowsHookEx
User32 $00409EEA CallWindowProcA
User32 $0040FC45 CallNextHookEx
User32 $0040FAB0 CallWindowProcA
//после имени библиотеки адрес возврата.
Причем _хххх.dll это мои программы, и о любой функции я могу вести расширенный лог, том числе подменять входные или ответные данные любой функции автоматически.
3. Самый тяжелый. Просматривается огромный первоначальный Лог, и правятся DLL, чтобы в логе были только заинтересовавшие функции. ( как пример ответ на IsDebuggerPresent=0, хотя в данном случае он и так false )
4.В нужных местах функций вставляется mov [$ffffffff],edx. И на вопрос системы ОТЛАДИТЬ загружаем программу в мой любимый отладчик Delphi.
5. Тут как повезет (Анализ, анализ и еще раз анализ) /* повезет - это время на слом программы*/

Хочется обсудить с участниками форума , достоинства о недостатки данного метода в сравнении с традиционными. К достоинствам явно относится - приаттачиные библиотеки, о которых исследуемый процесс даже не догадывается.

С удовольствием отвечу на любой вопрос , тех кто не понял пункты 1..2..3..4. Ну и собственно внемлю наставлениям гуру, которые предложат качественные и удобные технологии лома программ.

P.S. примеры программ, если таковые понадобятся, буду проводить на Delphi, так как на Си пишу программы только для микроконтроллеров.




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

Создано: 17 ноября 2006 12:54
· Личное сообщение · #2

ага. такой вопрос....
а вы собираетесь полностью переписать все библиотеки винды? и MFC тоже? и добавить туда ведение логов? или как? на сколько я понимаю, библиотеки должны выполнять нужные функции. или они будут вызываться из наших фиктивных библиотек?

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




Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 17 ноября 2006 16:57
· Личное сообщение · #3

Executioner пишет:
или они будут вызываться из наших фиктивных библиотек?

ну это само собой разумеющееся, я надеюсь.

Не проще ли не трогать прогу, а сделать следующим образом:
библиотеку Kernel32 переименовать в _kernel32 и т.д. Написать свою длл Kernel32 в которой будут теже ф-ии, что и в исходной с соответствующими поправками и вызовом оригинальных ф-ий. Ну в общем это не важно.

Теперь о методе. ИМХО имеет место быть. Но в большинстве случаев окажется нерентабельным и приведет к излишним тело/мозго - движениям. Ибо пункт 3 осиливанию на первый взгляд не подлежит.

-----
Blame the victim!




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

Создано: 17 ноября 2006 22:04
· Личное сообщение · #4

Executioner
а вы собираетесь полностью переписать все библиотеки винды? и MFC тоже? и добавить туда ведение логов? или как? на сколько я понимаю, библиотеки должны выполнять нужные функции. или они будут вызываться из наших фиктивных библиотек?

Пример:
// программу на Delphi из любой Dll ,пришет за меня другая программа
// в нее нужно только загрузить исходник и пример внизу получается автоматически.
library _ERNEL32;
uses SysUtils,windows;
const sk='_ERNEL32';
C_CreateProcessA=97;
C_ExitProcess=176;
var
f:text;
s:string;
_esp,d,nf:Dword;
pd,:^Dword;
function M_CreateProcessA:Dword;stdcall; external 'KERNEL32.DLL' name 'CreateProcessA'
function M_ExitProcess:Dword;stdcall; external 'KERNEL32.DLL' name 'ExitProcess'

procedure obr1;
begin
case nf of
C_CreateProcessA: s:='CreateProcessA';
C_ExitProcess: s:='ExitProcess';
end;
assignfile(f,sk+'.txt');
append(f);
dword(pd):=_esp;d:=pd^;
s:=sk+' $'+inttohex(d,8)+#9+s;writeln(f,s);
closefile(f);
end;

function CreateProcessA:Dword;stdcall;
begin asm
mov _esp,esp
mov nf,C_CreateProcessA
call obr // пишу лог
jmp M_CreateProcessA // вызываю стандартную функцию
end; end;
function ExitProcess:Dword;stdcall;
begin asm
mov _esp,esp
mov nf,C_ExitProcess
call obr
jmp M_ExitProcess
end;end;
exports
CreateProcessA,
ExitProcess;
begin
assignfile(f,sk+'.txt');
rewrite(f);
closefile(f);
end.

1nn0cent
Но в большинстве случаев окажется нерентабельным и приведет к излишним тело/мозго - движениям. Ибо пункт 3 осиливанию на первый взгляд не подлежит.

З пунк делаю так:
Запускаю программу жду секунду, завершаю процесс принудительно.
Смотрю лог, ремлю часто используемые бесполезные функции обычно:
C_InitializeCriticalSectionAndSpinCount:;
C_GetCurrentThreadId: ;
C_MultiByteToWideChar: ;
C_DeleteCriticalSection: ;
C_LeaveCriticalSection: ;
C_EnterCriticalSection: ;
C_GetCurrentProcessId:;
C_HeapFree:;
C_HeapReAlloc:;
C_GetProcessHeap:;
C_TlsGetValue:;
C_SetLastError:;
C_GetLastError:;
C_HeapAlloc:;
C_LocalFree:;
C_InterlockedDecrement:;
C_InterlockedIncrement:;
C_LocalAlloc:;
Далее лог получается небольшим и вполне читабельным.

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




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

Создано: 17 ноября 2006 23:08
· Личное сообщение · #5

Всё это лажа IMHO. IsDebuggerPresent можно обмануть в ring3, а в ring0 это нах не надо, там и так всё можно найти, что и делает StartForce. Лог АПИ не поможет в обходе перехватов Debug векторов, декомпиляции ВМ, и много много другого. Если честно, то я вообще не вижу хоть какой то пользы в перехвате и логировании АПИ функций в StarForce ибо в нем вся защита построена на драйверах, виртуальной файловой системе, и перехвате int1, int3 векторов.

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




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

Создано: 17 ноября 2006 23:40
· Личное сообщение · #6

PE_Kill пишет:
построена на драйверах, виртуальной файловой системе, и перехвате int1, int3 векторов.


Эт точно...Крякнуть драйвер..И все проблемы с эмуляцией образов решены... А вот библиотеки переписывать...Это лишнее...




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

Создано: 18 ноября 2006 06:10
· Личное сообщение · #7

мне кажется, что в таком случае проще запустить Kerberos, а не библиотеки писать...

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




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

Создано: 18 ноября 2006 07:17
· Личное сообщение · #8

Xserg Перехват АПИ идея не новая и давно реализованная. Гораздо проще, причем.
И сразу приходим к пункту 3, про который уже все сказали. Правда глобальный подход к логу АПИ навевает нехорошие мысли, как сделать труднонаходимую защиту



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

Создано: 18 ноября 2006 07:22
· Личное сообщение · #9

PE_Kill пишет:
Если честно, то я вообще не вижу хоть какой то пользы в перехвате и логировании АПИ функций в StarForce

То что в StartForce не нужны логии АПИ функций я, соглашусь, если заранее известно как зашита устроена. Но я ее ломал с нуля, и сначала просто не знал, как к ней подступиться.

Суть поднятой мной темы , не в том как обойти IsDebuggerPresent или метод защиты StartForce.
Просто я хотел обсудить:
Берется программа ХХХ ее нужно взломать, потому что жаба душит платить за нее 1000 зеленых. С чего начать исследования программы. Какие файлы программа подгружает, что делает с реестром, какие окна открывает, и главное в какой последовательности. Важно также оперативно подменять , реальные данные на левые и посмотреть как среагирует на них программа.

Недавно начал изучать, понемногу, OllyDbg и PE Explorer , и почитываю форум.
Не совсем новичок – только новичок в использовании крякерских программ
Executioner Kerberos это как? Где почитать?

tundra37 пишет:
Перехват АПИ идея не новая и давно реализованная. Гораздо проще, причем.

С удовольствием бы почитал.



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 18 ноября 2006 07:35
· Личное сообщение · #10

Xserg пишет:
С удовольствием бы почитал.

www.wasm.ru там статьи по теме есть.
Xserg пишет:
Kerberos это как? Где почитать?

Лучше не почитать, а поюзать. Иди в раздел скачать.

-----
Blame the victim!




Ранг: -18.8 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2006 08:02
· Личное сообщение · #11

Xserg пишет:
Какие файлы программа подгружает, что делает с реестром, какие окна открывает, и главное в какой последовательности

если вкратце: защита либо в exe,либо в protect.dll (последняя как правило маскируется под другим именем),
само собой защита от отладки получше чем IsDebugPresent +шифрование кусков кода
итого: из 1000 крекеров реально StarForce сломает только 1 и то наполовину



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 18 ноября 2006 08:35
· Личное сообщение · #12

Xserg пишет:
Какие файлы программа подгружает

FileMon

Xserg пишет:
что делает с реестром,

RegMon


Xserg пишет:
какие окна открывает

Spy++ это умеет, кажется

C_L_OHEHOK пишет:
получше чем IsDebugPresent +шифрование кусков кода

А шифрование кусков эта такая простая защита?



Ранг: -18.8 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2006 09:17
· Личное сообщение · #13

еуые




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

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

Kerberos - это API-монитор. на сайтах поищи. на Краклабе вроде есть. Есть еще ApiSpy, но у меня он так и не заработал.

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




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

Создано: 19 ноября 2006 00:35
· Личное сообщение · #15

Xserg пишет:
С удовольствием бы почитал.

ищи по слову хук(hook)



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 20 ноября 2006 02:34 · Поправил: 0xy
· Личное сообщение · #16

Xserg
А я считаю твою наработку полезной (по крайней мере, для моего уровня)
А Kerberos у меня ваабще не фурычит, т.к. юзаю Мастдай 9x.
Буду признателен за прогу, которая клепает dll-ки-переходники.
Только меня интересует чисто переходник, без логирования, типа:

[Kernel__.dll]
Function xxx()
Call Kernel32.Function xxx()
End function

В идеале должен получиться код: просто Jmp на соответствующую функцию оригинальной dll.
Прикол в том, что на этоих jmp можно безболезнено ставить бряки ;)

ЗЫ
Да, Делфы у меня нету, и я в ней бес понятия.
Посему прошу, если не трудно, скомпилить для меня переходники для стандартных либ из Русской Win ME (kernel, user, advapi и т.п.)
Спасибо.



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

Создано: 20 ноября 2006 08:19
· Личное сообщение · #17

0xy пишет:
Посему прошу, если не трудно, скомпилить для меня переходники для стандартных либ из Русской Win ME (kernel, user, advapi и т.п.)


Только c т.п. проблема , моя W98 еле живая, могу сделать заглушки из присланных файлов
MrSerg [шарик] pnz [point] ru ----- спамерам ---- MrSerg@Microsoft.com
Делов на несколько минут.




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

Создано: 21 ноября 2006 09:24
· Личное сообщение · #18

0xy пишет:
Буду признателен за прогу, которая клепает dll-ки-переходники.

и мне пришли пожалуйста. исходник,если можно. посмотрю. хотя вроде знаю как сделать, но интересно всеж.
мэйлту:executioner (собака) pisem (точка) net

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




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

Создано: 22 ноября 2006 07:54
· Личное сообщение · #19

Executioner пишет:
пришли пожалуйста. исходник

executioner (собака) pisem (точка) net - Наверное антиспам фильтр меня не пропускает
5 лет исходнику, но я его немного почистил.
компелить версией не ниже 6.0, иначе длинные имена функций не пройдут.

Спасибо всем кто мне ответил.

Сейчас пытаюсь написать себе pexplorer.lic для PE Explorer v1.98 R5.

Kerberos не дает ввести код , окно регистрации зависает.
OllyDbg повисает на RaiseException как отучить не пойму.


64b5_22.11.2006_CRACKLAB.rU.tgz - mdll.rar



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

Создано: 23 ноября 2006 23:37
· Личное сообщение · #20

Xserg пишет:
Сейчас пытаюсь написать себе pexplorer.lic для PE Explorer v1.98 R5.

По PE Eplorer-у есть тема. Смотри и спрашивай там.



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

Создано: 24 ноября 2006 01:53
· Личное сообщение · #21

tundra37
Не... вопрос как раз для новичков, изучение OllyDbg , а PE Explorer v1.98 R5 взят для примера, да и программа нужная.

PE Explorer v1.98 R5 (или другая программа) вызывает Kernel32.RaiseException много раз.
OllyDbg останавливается, жму Shift-F9 , опять останавливается и т.д.
Вопрос:
как отучить OllyDbg останавливается на Kernel32.RaiseException ?

Зы..
Хотя не удержался и написал программу кодирующую pexplorer.lic из текста, моим способом (см . Top). Сначала хотел подобрать ключ перебором, но 64битную кодировку мой компьютер сто лет подбирать будет. Так что в раздел по PE Explorer напишу когда, взломаю код, если конечно хватит терпения с Олькой бодаться.



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

Создано: 28 ноября 2006 04:51
· Личное сообщение · #22

Ребят, я конечно все понимаю... Но не будут ли ругатся цифровые подписи Microsoft?



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

Создано: 30 ноября 2006 06:56
· Личное сообщение · #23

eXtr0gen пишет:
Но не будут ли ругатся цифровые подписи Microsoft?

Цифровые подписи есть только у драйверов ХП. Если ты про механизм dllcaсhe, то он может быть отключен и обойден. "Самые основные" DLL и EXE контролируются строже, но "хорошо написанные" вирусы и программа AntiWPA это ведь как-то обходят ?!




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 30 ноября 2006 07:16
· Личное сообщение · #24

tundra37 AntiWPA не обходит, она просто говорит что типа нажмите там какую то кнопку, и после этого продолжает работать.

-----
StarForce и Themida ацтой!



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


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