eXeL@B —› Софт, инструменты —› NET patcher - Binary Editor NET exe,dll |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 17 января 2014 17:59 · Поправил: Medsft · Личное сообщение · #1 Итак непосредственно к Новому Году подготовить релиз не успел... но лучше уж поздно чем никогда NET patcher Утилита для бинарной правки кода в приложениях написанных в ILCode. Версия - Kristmas Edition Возможности: - изменение имен методов, полей и т.д. Коммент: я использую данный функионал для того чтобы при анализе обфусцированной сборки интересующие меня методы имели название так сказать подобающее их действиям и результам работы.Метод записи: пересборка приложения - удаление badILCode из тел методов Коммент: сегодня данную методику защиты используют 99% обфускаторов. Код конечно можно читать и без очистки но согласитесь гораздо приятнее когда мусорные инструкции удалены.Тут необходимо внести некоторую ясность. Некоторые обфускаторы используют неоффициальные возможности ILCode интерпретатора и изменяют заголовки методов.Поэтому крайне рекомендую в большинстве случаев я использовать universal fixer от CodeCracker`a перед началом работы. Прошу обратить внимание на слово "в большинстве"... т.е. не всегда ))).Метод записи: бинарный патчинг. - goto Entry Point Коммент: полезная фича особенно когда код хорошо обфусцирован. -NOP instruction Коммент: Как Вы поняли из названия функционала данная команда заменяет выделенные в теле метода инструкции Nop`ами.При этом я считаю самое главное и полезное)) патч исследуемого приложения происходит по типу замены байт без пересборки приложения. Не меняется ни размер самого файла ни размер самого метода.Метод записи: бинарный патчинг. -Reverse Branch Коммент: Инверсия прыжков.Метод записи: бинарный патчинг. -Binary Edit Коммент: Возможность непосредственно изменять бинарный код исследуемого приложения.Это пожалуй был самый сложный по части реализации метод.Ограничения версии: буфер для замены байт - ограничен 10 байтами.Метод записи: бинарный патчинг. -возможность отмены ваших изменений. Коммент: Кроме:изменение имен методов, полей и т.д. -визуальное отображение до операции:Save Ваших внесенных изменений Коммент: Поскольку не очень приятно редактировать код и при этом не видеть в ран-тайме а что же мы сделали. -паралельное отображения тела метода как в IL-коде так и в байт-формате (просьба HaRpy) Коммент: Просто приятно выделяете инструкции в окне отображения IL кода метода, а непосредственно в окне байт отображения метода выделяются байты данных инструкций. -Save you work. Коммент: Программа как я уже говорил раньше использует две разных методики сохранения результатов Ваших действий. Метод пересборки приложения и непосредственно бинарный патчинг. В случае использования в работе и того и другого метода сохранения работы придется сохранять результаты работы по очереди. -OpCodeTable. Коммент: Поскольку не все мыслят на байт-коде в программу встроена таблица всех операндов Il языка со всем что необходимо знать про ту или иную комманду. -большой faq по Il коду with bookmark. Коммент: Да просто надоело каждый раз лазить по винту для того чтобы что-то про Il код узнать из руководства. Взял да встроил его прямо в программу.Обращаю внимание на имеющийся функционал в данном разделе программы. Вы можете оставлять закладки на интересующие Вас страницы руководства с кастомным(т.е. Вашим собственным) описанием данной закладки. Ненужные закладки можно удалять.Для их сохранения создается в ран-тайме дополнительный файлик bookmarks.xml. Но Вам ведь не жалко 1-2 килобайт))) http://www.mediafire.com/download/9a7391482m3tlze/NET%20Patcher.zip New version: Kristmas Edition V.1.1. - add Search в Ilfaq Коммент: В связи с тем что для отображения текста используется сторонняя библиотека скорость поиска оставляет желать лучшего.Ну уж какая есть.Обращаю внимание что данное приложение не обращается к интернету все что ей необходимо для работы у нее есть. - add IlCodeDescription in MethodListView Коммент: Вообще тут бы надо остановиться по подробней. В главном меню появилась новая подменюшка "Options". Т.е. в программе закладываются определенные механизмы кастомизации интерфейса и функции. Как то например возможность отключения показа данной подсказки. - add "After Save, Load in main window modify file" Коммент: Добавил опцию несколько облегчающую работу в программе. Если она активирована после сохранения программа сама загрузит последнюю измененную сборку и откроет метод на котором Вы остановились P.S. Мои далеко ))) идущие планы по развитию Net patcher`a можно краем глаза разглядеть в тех опциях меню которые пребывают в состоянии Enabled = False а некоторыми можно даже немного поиграться как например динамической генерацией методов для раскриптовки strings правда только если Вы пишете на C#. Что из них выйдет на паблик пока не решил. Господа не надо на них юзать всякие GrayWolf`ы в надежде поменять данное состояние контрола)))) реализации в коде нет. P.S.S. Возможны утечки памяти.Перестартовывайте приложение хотябы иногда. http://www.mediafire.com/download/8odtat19km6jcxe/NET%20Patcher%20v.1.1.zip Version: Kristmas Edition V.1.2. - fix many bugs Коммент: Поправил баги + моноширные шрифты + по мелочи. Сами увидите. - add technology to decrypt string in method Коммент: Это вообще great мне вообщем понравилось))). Добавляете в options свои методы для раскриптовки стрингов (на C#), их может быть несколько, а потом выделяя строку с ldstr в методе ее декриптуете своим же методом )))) Ну похвалите меня)))) http://www.mediafire.com/download/mbwub188e01wsrt/NET%20Patcher%20v.1.2.zip Лайки и сообщения об ошибках приветствуются. | Сообщение посчитали полезным: Gideon Vi, daFix, AKAB, soho, nick8606, r_e, HaRpY, v00doo, Quadcon, Dazz, CyberGod, icerix, VodoleY, 4kusNick, Artem_N, Fedonin, Alinator3500, Kindly, igorca, m0bscene, Rio, Hellspawn, avqse, dfnsff, ADMIN-CRACK, Isaev, OnLyOnE, JohnyDoe, DICI BF |
|
Создано: 27 января 2014 18:53 · Личное сообщение · #2 Обновил версию см. в шапке То Isaev: у проги в ee мегабайтах упрятано много чего по нескольким причинам: во первых сторонние компоненты (не лицензированные, и другая тряхомудь). Удобней же если вся прога это один файл а не куча Dll... А сама прога и ее код не больше 500 кб))))) To Nimnul: парсинг dnlib (мой мод) и Metadatareader от Bogdan + поток - решение соглашусь с HaPrY не самое хорошее переделаю на что нибудь одно, но потом)))) На счет посчета контрольной суммы (1 вариант(если кастомный): а что это разве не такой же метод????, 2 вариант: попробуйте Net patcher на файлике со stongName) To 4kusNick:спасибо, я тебя увековечил в ?))) | Сообщение посчитали полезным: 4kusNick, Dazz |
|
Создано: 27 января 2014 19:17 · Личное сообщение · #3 |
|
Создано: 27 января 2014 19:40 · Личное сообщение · #4 |
|
Создано: 28 января 2014 00:14 · Личное сообщение · #5 |
|
Создано: 28 января 2014 00:57 · Поправил: 4kusNick · Личное сообщение · #6 Medsft xD Попробовал декрипт - не сработало. Метод такой: http://pastebin.com/7G6LLDXK Скомпилился он без ошибок. Далее выделил строку (ldstr), на неё правой кнопкой - декрипт блабла, выбрал свой метод (он почему-то сохранил название decrypt_77, хотя я его изменил), результат: В экземпляре объекта не задана ссылка на объект. в NETPatcher.GUI.mainForm.tsm_Click(Object sender, EventArgs e) в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e) в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met) в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met) в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea) в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ScrollableControl.WndProc(Message& m) в System.Windows.Forms.ToolStrip.WndProc(Message& m) в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Вообще в таком виде декрипт строк не многим лучше своей простой утилитки, которая кушает строку и выдает расшифрованную. Вся мощ патчера в том, что он умеет править сборку, этим и стоит пользоваться - строки следует расшифровывать во всей сборке имхо, при этом удаляя вызов старого расшифровщика. Или, что вообще было бы супер - прямо расшифровщик и использовать! Опционально конечно. Типа тыкнули на вызов метода (которому передается что-либо в аргументах, будь то зашифрованная строка,и ил число-пароль, ну вы знаете что там проты юзают короче), в контекстном меню команда типа "Try to replace with result" и "Try to replace with result all" - для одного вызова или для всех во всей сборки соответственно. Вот тогда будет просто шикарно работать со сборками, в которых расшифровка происходит статическими методами всякими, не требующими никакой инициализации при запуске (многие проты юзают именно такие методы) - тупо все вызовы расшифровщика заменяем на результат, вуаля. PS и очень нехватает редактирования уже добалвенного декриптовщика. ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. |
|
Создано: 28 января 2014 01:11 · Личное сообщение · #7 |
|
Создано: 28 января 2014 01:13 · Поправил: Medsft · Личное сообщение · #8 |
|
Создано: 28 января 2014 01:21 · Личное сообщение · #9 |
|
Создано: 28 января 2014 01:30 · Личное сообщение · #10 Nimnul пишет: А вот так лучше не делать, разработчики прота могут использовать это для перехвата управления. Ну так на свой страх и риск же. Да и в любом случае при анализе придется заглянуть в метод, чтобы убедиться, что он расшифровывает строку. Medsft пишет: название присвоенное классу Main и имя основного метода сгенерированное прогой менять нельзя. и наймспайс тоже нельзя а все остальное можно) Аа, вот напротив имени метода не хватает коммента, что его менять нельзя) Nimnul он про расшифровщик толкует. Изменение байта в подписанной сборке будет задетекчено - это факт. Другое дело, что можно подпись снести без потерь при удачных обстоятельствах (или отключить проверку). ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. |
|
Создано: 28 января 2014 18:44 · Поправил: Medsft · Личное сообщение · #11 Nimnul пишет: Ты меняешь в файле любой байт и все, сборка уже не загрузится у меня грузится. Да верификацию не проходит но грузится. И ничего я вроде с компом не делал)) a02d_28.01.2014_EXELAB.rU.tgz - TestStrongName.zip |
|
Создано: 28 января 2014 19:26 · Поправил: Nimnul · Личное сообщение · #12 Medsft Code:
Видимо у меня тоже отключена опция запретить запуск не валидных сборок. Но как видишь из логов выше патченая сборка не проходит валидацию. ----- have a nice day |
|
Создано: 28 января 2014 21:11 · Личное сообщение · #13 Согласен.На моей машине пропатченные дллки спокойно подгружаются при старте приложений и никто на то что у них не валидная проверка стронгнайм не жалуется... Более того я тут недавно работу делал патчером так она щас на многих машинах стоит и не жалуется никто.А может эта опция у всех отключена?)))))) |
|
Создано: 28 января 2014 21:42 · Поправил: Nimnul · Личное сообщение · #14 Medsft Начиная с .Net 3.5 SP1 http://www.rsdn.ru/forum/dotnet/5320378 PS: Майкрософт как всегда в своем духе ----- have a nice day | Сообщение посчитали полезным: Medsft |
|
Создано: 28 января 2014 23:17 · Личное сообщение · #15 Nimnul Подтверждаю, патченный файлик со SN у меня тоже тихо себе работает. То-то я не особо сталкивался с проблемами из-за подписи в последнее время =) ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. | Сообщение посчитали полезным: Medsft |
|
Создано: 29 января 2014 01:47 · Личное сообщение · #16 |
|
Создано: 29 января 2014 10:09 · Личное сообщение · #17 Window`вая проверка валидности StrongName [Flags] public enum StrongNameInFlags : int { /// <summary>verify even if the settings in the registry disable it</summary> ForceVerification = 0x00000001, /// <summary>verification is the first (on entry to the cache)</summary> Install = 0x00000002, /// <summary>cache protects assembly from all but admin access</summary> AdminAccess = 0x00000004, /// <summary>cache protects user's assembly from other users</summary> UserAccess = 0x00000008, /// <summary>cache provides no access restriction guarantees</summary> AllAccess = 0x00000010 } [Flags] public enum StrongNameOutFlags : int { /// <summary>set to false if verify succeeded due to registry settings</summary> WasVerified = 0x00000001 } /// <summary> /// Verify a strong name/manifest against a public key blob /// </summary> /// <param name="wszFilePath">valid path to the PE file for the assembly</param> /// <param name="dwInFlags">flags modifying behavior</param> /// <param name="pdwOutFlags">[out] additional output info</param> [DllImport("mscoree.dll")] public static extern bool StrongNameSignatureVerification( [MarshalAs(UnmanagedType.LPWStr)]string wszFilePath, StrongNameInFlags dwInFlags, [Out]out StrongNameOutFlags pdwOutFlags); ... StrongNameOutFlags outFlags; StrongNameInFlags inFlags = StrongNameInFlags.Install | StrongNameInFlags.AllAccess|StrongNameInFlags.ForceVerification; bool passedVerification = StrongNameSignatureVerification(fp, inFlags, out outFlags); |
<< . 1 . 2 . |
eXeL@B —› Софт, инструменты —› NET patcher - Binary Editor NET exe,dll |