Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Программирование —› Подскажите пожалуйста, что не так делаю в il-кодах (нужно убрать вызов функции) |
Посл.ответ | Сообщение |
|
Создано: 03 июля 2007 08:19 · Личное сообщение · #1 Немного истории: есть программа, очень нужная (мне) Нашел место, в котором вызывается функция проверки ключа, и если проверка не удалась - возникает исключение. Есть мысль убрать эту проверку. Дизассемблировал exe-шник Вычистил StrongKey. (Если после этого снова собрать ехе - то все работает нормально) Пытаюсь убрать вызов этой фукнции. /* IL_0037: call void [Licensing.Checker]Licensing.Checker.LicenseChecker::CheckLicense(stri ng, string, string) */ IL_0037: nop IL_0038: nop IL_0039: nop IL_003a: nop IL_003b: nop IL_003c: nop Заполнил адресное пространство с 0037 по 003с nop'ами. ----Дальше идет то, что после этой функции. IL_003d: ldarg.0 Запускается программа нормально - но когда попадает на это место - при нажатии кнопки сохранить код - возникает исключение System.InvalidProgramException: Common Language Runtime detected an invalid program. У меня два вопроса: 1. Может я чего-то не так понял насчет nop-ов? 2. В тексте исключения пишет, что можно активировать вызов JIT-дебаггера, но у меня не получилось. Добавил строку <system.windows.forms jitDebugging="true" /> в конфиг-файл ilasm'a и в конфиг моей программы. |
|
Создано: 03 июля 2007 08:29 · Личное сообщение · #2 |
|
Создано: 03 июля 2007 08:36 · Личное сообщение · #3 |
|
Создано: 03 июля 2007 08:39 · Личное сообщение · #4 |
|
Создано: 03 июля 2007 08:39 · Личное сообщение · #5 |
|
Создано: 03 июля 2007 08:40 · Личное сообщение · #6 |
|
Создано: 03 июля 2007 09:14 · Личное сообщение · #7 |
|
Создано: 03 июля 2007 14:49 · Личное сообщение · #8 |
|
Создано: 03 июля 2007 15:57 · Личное сообщение · #9 nop не нужно ставить, если правиш непосредственно IL код а не в бинарнике, достаточно просто закоментировать не нужные команды. Ошибка скорее всего возникает из-за того что перед вызовом функции что-то помещается в стек а потом оттуда не "вынимается". проверь балансировку стека. Обрати внимание вот на этот плуг для .NET Reflector: hxxp://sebastien.lebreton.free.fr/blog//archives/9-Reflexil- v0.1.html |
|
Создано: 04 июля 2007 08:58 · Личное сообщение · #10 jfx Утилиту скачал - вещь интересная Появились новости в этом направлении: посмотрел код до вызова ненужной мне функции - там действительно помещались в стек параметры. Убрал их - сейчас ошибки при попытке сохранения лицензии нет, но и регистрация не прошла. Хочу попробовать это посмотреть в отладчике. Сейчас у меня основной вопрос - как можно запустить отладку этого дела? NIKOLA Проблема в том, что эта функция находится в другой dll - попробовал ее вчера пересобрать - появились ошибки. Пока, насколько возможно, хочу постараться не трогать ту dll-ку |
|
Создано: 04 июля 2007 09:08 · Личное сообщение · #11 |
|
Создано: 04 июля 2007 10:52 · Личное сообщение · #12 |
|
Создано: 04 июля 2007 11:50 · Личное сообщение · #13 |
eXeL@B —› Программирование —› Подскажите пожалуйста, что не так делаю в il-кодах (нужно убрать вызов функции) |