Сейчас на форуме: tyns777, localhost1, vsv1, asfa (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Как легко поймать проверку на модификацию dll кода С# в этой самой dll? |
Посл.ответ | Сообщение |
|
Создано: 10 февраля 2020 01:59 · Личное сообщение · #1 App: https://cdn.manictime.com/setup/v4_4_8_0/ManicTimeUsb.zip У софта есть полный триал на 15 дней. Раньше я патчил их хардкод с 0F (15 days) на 7F и обновлял софт раз в пол года. Теперь при патче падает софт. Сам чек на триал в Finkit.ManicTime.Common.O.dll Раньше выглядел так ~: Code:
Сейчас вот: Code:
Есть какой простой вариант это обойти или надо обучаться Шарпу? А если надо то можно подсказки какие АПИ открывают и читают файлы и делают хэши? И как ставить бряки в dnSpy на код dll если дебажить сам ехе? |
|
Создано: 10 февраля 2020 03:57 · Личное сообщение · #2 |
|
Создано: 10 февраля 2020 06:04 · Личное сообщение · #3 |
|
Создано: 10 февраля 2020 13:47 · Личное сообщение · #4 Варез варезом, хотелось понять что к чему. Понял как ставить бряки на дллки. Нашёл call stack после unhandled exception. Вроде уходим в fastfail по приказу авторов софта. num14, num8 долго возят, в этом цикле похожем на проверку каких-то байтов. ptr pointer на байты в середине начинается использоваться Code:
Занопив проверку num14 == num8 софт всё равно падает... Почему? |
|
Создано: 10 февраля 2020 14:28 · Личное сообщение · #5 |
|
Создано: 10 февраля 2020 14:52 · Личное сообщение · #6 |
|
Создано: 13 февраля 2020 16:59 · Личное сообщение · #7 Mishar_Hacker пишет: Потому что дебажить надо дальше, а лучше всего снять обфускатор и нормально посмотреть на код Дебажить трудно когда хеллоу ворлд на Шарпе написать не можешь... :> Дедот не справляется. _MBK_ пишет: Падает туда же или куда то еще? Туда же, стандартный хэндлер всех анхэндлд ксепшинс видать, но с другого места. C# src Code:
Переименовал пару вещей что бы скормить это дело компилью с -О3, посмотреть что будет: typedef unsigned int uint; typedef unsigned char byte; typedef unsigned short ushort; typedef unsigned long ulong; C#: byte* ptr = (byte*)((void*)Marshal.GetHINSTANCE(module)); C char somemem[1024]; byte* ptr = (byte*)somemem; ~line142 C# uint* ptr5 = (uint*)(ptr + (UIntPtr)(flag ? ptr2[3] : ptr2[1]) / 4); C uint* ptr5 = (uint*)( ptr + (??WHATCAST??) (flag ? ptr2[3] : ptr2[1]) / 4 ); ptr2[i] returns uint cast it to something divide by 4 plus ptr (ptr type is byte*) uint* ptr5 = (uint*)( ptr + (uint*) (flag ? ptr2[3] : ptr2[1]) / 4 ); // uint* cast Правильно кастить в uint*? Деление на 4 не понимаю. Добавлено спустя 40 минут https://godbolt.org/z/pgs4c3 |
|
Создано: 13 февраля 2020 18:21 · Личное сообщение · #8 Что-то не то, видимо, патчишь... У меня с модифицированной дллкой все запускается - https://www.screenpresso.com/=HGoX | Сообщение посчитали полезным: friend |
|
Создано: 13 февраля 2020 18:21 · Поправил: Medsft · Личное сообщение · #9 то что ты показал код в предидущем посте это элемент защиты, занопь еще еще вызов и будет тебе счастье Перевожу на русский язык занопь все вызовы метода \uE000() Вангую что ты не знаешь как их найти: в dnspy или еще где встаешь на нем в дереве -> вызов контекстного меню а там Analise а в нем Used By | Сообщение посчитали полезным: friend |
|
Создано: 13 февраля 2020 20:11 · Личное сообщение · #10 uncleua пишет: У меня с модифицированной дллкой все запускается - https://www.screenpresso.com/=HGoX Так это ж другая дллка, так не честно... Medsft пишет: Вангую что ты не знаешь как их найти Не, я ведь уже продвинутый. Для полного счастья хотелось бы узнать как бы поставить бряк на чтение моего патча. Понять что это за странный чек такой, вроде немного байт проверяет (я loop'ов не вижу), a мой патч под него попался... Протектор .Net reactor? Вопрос по dnSpy: чё он сразу в implementation не прыгает когда я на метод кликаю? |
|
Создано: 14 февраля 2020 08:49 · Личное сообщение · #11 |
|
Создано: 19 февраля 2020 12:16 · Личное сообщение · #12 |
eXeL@B —› Вопросы новичков —› Как легко поймать проверку на модификацию dll кода С# в этой самой dll? |