Сейчас на форуме: Magister Yoda, johnniewalker, Kybyx, vsv1, r0lka, -Sanchez-, testrev1337 (+3 невидимых) |
eXeL@B —› Крэки, обсуждения —› Взлом программы написанной на .NET с зашифрованными с помощью SHA строками |
Посл.ответ | Сообщение |
|
Создано: 08 апреля 2011 03:19 · Поправил: fl4r3 · Личное сообщение · #1 Здравствуйте. Вторая тема которую я создаю здесь за 2 года, но я опять не справляюсь (если кому то интересно, то предыдущая тема здесь: 1) datalogger = -1 2) Developer = 4 3) Free = 0 4) Pro_Demon = 1 5) Pro_Ostrich = 2 6) Tuner = 3 Все это хранится в eCtune.Data->eCtuneVersions. В меню программы есть Help->Registration. Есть привязка к Machine ID. Но я думаю можно обойтись и без написания кейгена, а просто поправить проверку версии при старте, хотя конечно это помогло бы получать новые обновления для этой программы. Надо найти где при запуске программы проверяется версия и поправить код. Под отладчиком отказывается работать. Цель: заполучить версию Tuner. Пожалуйста, тыкните носом, куда копать. Заранее благодарен. Сам софт можно скачать по ссылке: |
|
Создано: 08 апреля 2011 05:22 · Личное сообщение · #2 |
|
Создано: 08 апреля 2011 07:35 · Поправил: fl4r3 · Личное сообщение · #3 |
|
Создано: 08 апреля 2011 09:28 · Личное сообщение · #4 Строки с помощью SAE деобфусцируются как раз без проблем. Основная проблема, как по мне, потом переподписать или убрать подпись файла строгим именем, чтобы запустить поправленый .ехе. Еще поубирать все ловушки типа - Code:
|
|
Создано: 08 апреля 2011 10:39 · Поправил: fl4r3 · Личное сообщение · #5 uncleua За SAE спасибо, правда у меня не получилось получить читабельные строки все равно, видимо я что то делаю не так, никогда не пользовался SAE. При попытке деобфусцировать получаю: "Could not load file or assembly 'eCtune, Version=0.0.2.3, Culture=neutral, PublicKeyToken=6ab39c1170c85a55' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)" Кстати, чем был получен приведенный выше код? |
|
Создано: 08 апреля 2011 10:43 · Личное сообщение · #6 |
|
Создано: 08 апреля 2011 10:51 · Личное сообщение · #7 |
|
Создано: 08 апреля 2011 10:58 · Личное сообщение · #8 Не знаю, получаю ошибку (если только не выбрать вариант в опциях Flow without boolean function, который не дает никакого эффекта в деобусцировании строк): Could not load file or assembly 'eCtune, Version=0.0.2.3, Culture=neutral, PublicKeyToken=6ab39c1170c85a55' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) at System.Reflection.Assembly.nLoadFile(String path, Evidence evidence) at System.Reflection.Assembly.LoadFile(String path) at SimpleAssemblyExplorer.AssemblyUtils.LoadAssemblyFile(String assemblyFile) at SimpleAssemblyExplorer.Deobfuscator.DeobfBoolFunction(String assemblyFile, MethodDefinition searchInMethod) at SimpleAssemblyExplorer.Deobfuscator.DeobfFlow(String file, MethodDefinition method) at SimpleAssemblyExplorer.Deobfuscator.HandleConstructor(TypeDefinition type, String file) at SimpleAssemblyExplorer.Deobfuscator.HandleType(TypeDefinition type, String file) at SimpleAssemblyExplorer.Deobfuscator.Deobf(AssemblyDefinition assemblyDef, String file) at SimpleAssemblyExplorer.Deobfuscator.Go() at SimpleAssemblyExplorer.frmDeobf.btnOK_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Strong name validation failed. (Exception from HRESULT: 0x8013141A) |
|
Создано: 08 апреля 2011 11:21 · Поправил: PE_Kill · Личное сообщение · #9 fl4r3 тебе же написали uncleua пишет: Основная проблема, как по мне, потом переподписать или убрать подпись файла строгим именем, чтобы запустить поправленый .ехе. Как думаешь что означает строчка?: fl4r3 пишет: Strong name validation failed. PS Походу SAE пытается что то изменить в сборке при деобфускации. ----- Yann Tiersen best and do not fuck |
|
Создано: 08 апреля 2011 11:31 · Поправил: fl4r3 · Личное сообщение · #10 |
|
Создано: 08 апреля 2011 23:04 · Личное сообщение · #11 uncleua пишет: Основная проблема, как по мне, потом переподписать или убрать подпись файла строгим именем, чтобы запустить поправленый .ехе. Вот в этом не вижу проблемы. Можно анализировать деобфусцированный файл, а править исходный. Найти те куски из деобфусцированного файла в исходном не составляет труда. Ищем просто по последовательности HEX значений. |
|
Создано: 09 апреля 2011 00:08 · Личное сообщение · #12 |
|
Создано: 09 апреля 2011 07:48 · Поправил: fl4r3 · Личное сообщение · #13 |
|
Создано: 09 апреля 2011 15:38 · Личное сообщение · #14 |
|
Создано: 09 апреля 2011 19:17 · Личное сообщение · #15 Как я уже писал, я ломаю для себя. Поэтому, то что он не запуститься где то еще, это абсолютно не критично. А вообще конечно можно написать кейген и это решит все проблемы. Правда программа при старте думает, что она PRO_Demon лицензия и не дает даже возможности вводить Serial ID, который генерируется на основе Machine ID и включает в себя и ваше имя и название компании и т.д. |
|
Создано: 10 апреля 2011 07:28 · Поправил: fl4r3 · Личное сообщение · #16 Вообще, в принципе, единственное отличие версии от версии это активизация определнных меню. Сейчас они установлены в Enabled = false. При создании новой прошивки меню File->Save as Binary недоступно. Осталось локализовать участок кода отвечающий за проверку и установку этого меню в .Enabled = true. Насколько я понимаю мне надо искать коллекцию типа MenuItemCollection в коде? |
|
Создано: 10 апреля 2011 08:22 · Поправил: fl4r3 · Личное сообщение · #17 Собственно вот интересный кусок кода: Code:
Строку h0nd@eC7un€ они используют как пароль, 473470 как соль, 2 - количество итераций. Строка h0nd@eC7un€ видимо по их мнению выглядит как завуалированное название программы Сам алгоритм шифрования: Code:
и дешифрования: Code:
Несовпадения отлавливают эксепшеном по Out Of Bounds. В директории %systemroot%\system32\ лежат два файла: TMSetp.dbf и TMSetp2.dbf Содержимое TMSetp.dbf = ј7ѓfЗ”у™РE‘°ПЇЙНЭUі и меняется при каждом запуске. TMSetp2.dbf - пустой. |
|
Создано: 10 апреля 2011 09:05 · Поправил: fl4r3 · Личное сообщение · #18 Формат файла license.xml: Code:
Насколько я понял потом из этого файла создается файл lic.xml. Как видно часть полей хешируется SHA1, а именно: LicID LicType LicExpDate LicPayType Похоже скоро можно будет писать генератор лицензий. Буду рад любой помощи. Пока не совсем понимаю где используется Machine ID. Есть подозрение что это LicKey. Апдейт: Попробовал создать файл license.xml по описаному выше шаблону найденному в коде. Получилось следующее: Code:
Теперь надо зашифровать функцией m0001c3 поля LicID, LicType, LicExpDate, LicPayType. Зашифрованный вид: Code:
Если подсунуть данную лицензию программе, то в %systemroot%\system32\ она создаст кроме TMSetp.dbf еще и непустой файл TMSetp2.dbf, но почти мгновенно его удалит и выйдет с ошибкой Contact eCtune(info@ectune.com) with MSGID 003H. Содержимое TMSetp.dbf: Code:
Содержимое TMSetp2.dbf: Code:
Хотя из данного кода: Code:
видно, что license.xml должен быть зашифрован, а его расшифрованный вариант будет храниться в lic.xml. | Сообщение посчитали полезным: Jim DiGriz |
|
Создано: 10 апреля 2011 09:17 · Личное сообщение · #19 |
|
Создано: 10 апреля 2011 12:04 · Поправил: fl4r3 · Личное сообщение · #20 Archer Приношу извинения за нарушение правил форума. Замечания приняты. Получается, что файл license.xml зашифрован целиком функцией m0001c3, а получившийся файл lic.xml содержит шифрованные с помощью той же функции значения LicId, LicType и т.д.? То есть насколько я понимаю логику разработчиков, они пошли данным путем, чтобы даже если пользователь во время запуска программы найдет файл lic.xml, то он увидит лишь криптованные строки. Вообщем, я написал криптор декриптор файла license.xml и lic.xml. Вот код: Code:
Если успеть словить файл TMSetp2.dbf и дешифровать его то получим следующее содержимое: Code:
то есть MachineID. Ребята, очень нужна ваша помощь, я стараюсь как могу, вроде все проясняется, но вот одно неизвестное поле ставит меня в тупик(LicKey, которое я принял равным MachineID, может быть ошибочно). А еще не понятно как на момент запуска программа определяет свой тип версии (Pro_Demon, Tuner, Developer и т.д.), потому что не похоже, что она берет это из файла лицензии. |
|
Создано: 10 апреля 2011 13:21 · Личное сообщение · #21 |
|
Создано: 10 апреля 2011 14:19 · Поправил: fl4r3 · Личное сообщение · #22 yanus0 Это то верно, но я не могу пока на 100% утверждать какой формат у XML файла license.xml. То есть сам криптор я написал и он работает, а что должно быть в самом файле еще до шифрования я могу только догадываться. В итоге постоянно вылетает эксепшн, который отлавливается программой, когда я пытаюсь своим криптованным файлом её кормить. Есть файл XML с обычными настройками. Подсмотрел там формат. Исправил свой файл примерно так: Code:
Закриптовал. Подсунул программе. Все равно ловит эксепшн вот этот: Code:
Сейчас буду пытаться поменять в коде на MessageBox.Show(exception.Message); чтобы понять, что же ей не нравиться. Основная проблема найти этот участок кода в exe файле. А еще я знаю, что пока что в этой теме есть только один человек который способен мне помочь. Это zeppe1in |
|
Создано: 10 апреля 2011 16:35 · Поправил: fl4r3 · Личное сообщение · #23 В предыдущее сообщение не влазило: Насколько я понимаю, из этого куска кода(возможно так не тривильно понять, но запустите его на исполнение с промежуточным выводом и все станет понятно) из LicID генерируется строка такого же формата как MachineID. То есть по сути LicID введенный криптуется и сверяется с MachineID: Code:
Теперь возникает вопрос как написать кейген для заданного MachineID. И всё же надо выяснить что такое LicKey в XML. |
|
Создано: 11 апреля 2011 04:54 · Поправил: fl4r3 · Личное сообщение · #24 Алгоритм вычисления строки формата MachineID из LicID с моими комметариями. Там есть еще неполное обратное преобразование и я не знаю где оно используется и зачем. Code:
| Сообщение посчитали полезным: bnufb |
eXeL@B —› Крэки, обсуждения —› Взлом программы написанной на .NET с зашифрованными с помощью SHA строками |