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

 eXeL@B —› Основной форум —› Кто-нибудь ковырял dxtory? .net + strong name + dotfuscator+ модули на C++ с подписями
Посл.ответ Сообщение


Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 22 января 2011 15:12 · Поправил: Rascal
· Личное сообщение · #1

Решил тряхнуть стариной. Глянул прожку dxtory для записи видео из игр, шустро бегает, во время записи отзывчивость мышки практически не уменьшается, фпс держится - идеально для FPS аля BF. Сцыль тут http://dxtory.com/v2-download-en.html . Из ограничений вроде простая текстура посреди видео.

Первый же взгляд на гуй - дотнет. Загнал в рефлектор - имена конечно не фонтан, но работать можно. На глаз глянул DxtoryCore.dll в редакторе ресурсов - явно виднеется подозрительный ресурс triallogo. Судя по первым буквам DDS - это то что надо. Отрыл просмотрщик DDS и экспортнул сию шнягу - и правда то что надо. Нашел размеры, поправил, ширину сделал 1 пиксел - в просмотрщике все как надо, полоска шириной в пиксел, но при запуске софтины ругается. Полез в рефлекторе изучать, что там за защита - обычный флаг. В рефлекторе f.a. Но много дублей проверок. Решил все таки убрать проверку файлов дабы выпилить нах текстуру и не париться. Нашел место, где все проверяется: ds.a. С двумя параметрами - выдергивание своей подписи из хвоста файла(байтики "FILESIGN", 80 байт ЭЦП на sha1, 4 байта контрольной длины видимо). ds.a с тремя параметрами - собсно проверка эцп. И тут я встрял. Не могу изменить код программы ибо хз что делать с подписями, файл не стартует. Так как в подписях дотнета нибумбум решил как умею сделать - накатал быстренько хук на CreateFileW и если дергают DxtoryCore.dll - меняю путь на непатченую длл. Сама же DxtoryCore.dll уже с пропатченой текстурой. С таким раскладом программа стартует, но длл работать не желает.

Олли не пашет на моей венде, все делаю на глаз =\ Так что вот в думках, стоит ли ваще заморачиваться? Есть ли способ обойти strong name? Судя по всему паблик ключ привязан ко всему - и к проверке файлов, и к лицензии, и хз к чему еще. Японцы сцуко все технологии дрочат до перфектного состояния чтоли =\

Code:
  1.                     byte[] publicKey = Assembly.GetEntryAssembly().GetName().GetPublicKey(); <- ахтунг?
  2.                     f.= new byte[publicKey.Length - 12];
  3.                     Array.Copy(publicKey, 12, f.e, 0, f.e.Length);
  4.                     y.c(); <- проверка подписи файлов
  5.                     y.b(); <- после проверки подписи и перед проверкой регнутости - видимо проверка ключа
  6.                     if (!f.a) <- думаю понятно
  7.                     {
  8.                         TrialDialog dialog = new TrialDialog();
  9.                         if (!dialog.ShowDialog().Value)
  10.                         {
  11.                             base.Shutdown();
  12.                             return;
  13.                         }
  14.                     }


-----
Недостаточно только получить знания:надо найти им приложение





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

Создано: 22 января 2011 16:05
· Личное сообщение · #2

StrongName можно снять CFF




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 22 января 2011 16:18
· Личное сообщение · #3

я через рефлексил добавил в список непроверяемых - падает программа. Хз отчего и почему. Есть спецы по донету?

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 22 января 2011 16:36 · Поправил: uncleua
· Личное сообщение · #4

Тут спецы нужны по переподписи, наверное...
Есть такая тулза Strong.Name.Helper - www.datafilehost.com/download-55be28ef.html
Правда мне с ее помощью что-то ничего толкового сделать ни разу не удалось... )



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 22 января 2011 16:40
· Личное сообщение · #5

Rascal
если убрать подпись с одного файла - нужно (!) также пропатчить все длл-ки что ссылаются на ету
Есть хорошие утилиты для етого - например AdmiralDebilitate
он сам ищет на кого ссылается длл и делает все патчи. Удобно.



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

Создано: 22 января 2011 16:41
· Личное сообщение · #6

sendersu пишет:
Есть хорошие утилиты для етого - например AdmiralDebilitate


В даном случае AdmiralDebilitate не помощник...




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 22 января 2011 16:55 · Поправил: Rascal
· Личное сообщение · #7

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

С подписями там замуты. Судя по всему автор хорошо понимает, как усложнить жизнь. Собсно зависимых либ нету. Все либы на плюсах написаны насколько я успел заметить. Именно ключевые, которые и выполняют работу.

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 23 января 2011 01:13
· Личное сообщение · #8

А сделать лоадер, который будет патчить память шарпового экзешника, не вариант?



Ранг: 35.0 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 23 января 2011 01:52
· Личное сообщение · #9

Kaimi
нет



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

Создано: 23 января 2011 12:52
· Личное сообщение · #10

sniper пишет:
нет

Лично знаешь, что думает автор топика, или у тебя есть какие-то конкретные причины считать это неприемлемым/невозможным?



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

Создано: 23 января 2011 13:20
· Личное сообщение · #11

А там думать особо нечего и не над чем...
Надо просто изменить в подписаном строгим именем файле в НЕХ-редакторе один из переходов с true на false или наоборот и соорудить лоадер оригинального файла...
Я когда-то пробовал и если не изменяет склироз - попытка оказалась безуспешной...




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 23 января 2011 15:11
· Личное сообщение · #12

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

Патчить шарп в памяти занятие наверно веселое, не пробовал, ибо там все же jit компилер, который компилит код куда придется.

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 23 января 2011 15:22 · Поправил: Kaimi
· Личное сообщение · #13

Не надо трогать код после компиляции. Запусти из лоадера шапровский экзешник с флагом CREATE_SUSPENDED, посмотри базу по которой он загрузился, прибавь статичный оффсет, поменяй байты в памяти, распаузи и все отработает нормально.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 23 января 2011 15:30 · Поправил: Rascal
· Личное сообщение · #14

Ок, попробую.

Лол бля, скажите мне, чем можно посмотреть смещение байтика в дотнете. Рефлекторы, илдасмы и прочее показывает только код. А после модификации байта в рефлексиле и сохранении перекуроченым получается весь файл. Файл компейры дают пелену листингов смещений и изменений.

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 23 января 2011 16:09
· Личное сообщение · #15

- загрузить файл в ildasm.exe -> View -> Show Bytes -> галочка;
- найти нужный метод и скопировать RVA;
- загрузить файл в CFF Explorer.exe и ввести RVA в Address Converter.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 23 января 2011 16:26 · Поправил: Rascal
· Личное сообщение · #16

Такс, я через иду сделал, так вот что интересно, исправил байтик ради интереса, без рефлекторов, которые пересобирают ехе. Запустился таки... Возможно удастся зарезать все проверки.

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 23 января 2011 16:57 · Поправил: uncleua
· Личное сообщение · #17

Rascal пишет:
так вот что интересно, исправил байтик ради интереса, без рефлекторов, которые пересобирают ехе. Запустился таки...

Интересно, вообще-то...
Я пробовал в НЕХ-редакторе изменить байтик тоже без никакого пересбора, но прога начала при запуске падать...


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


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