Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› Контрольная сумма |
Посл.ответ | Сообщение |
|
Создано: 18 августа 2008 20:39 · Личное сообщение · #1 Скачал последний PEExplorer, cкачал русификатор. После русификации в папке с прогой появился файл pexplorer.Rus. Прога не только оказалась не русифицирована, но и стала выдавать: "Runtime error 101 at 001B9496" и отказалась запускаться( после удаления pexplorer.Rus прога запускается и работает) . Тогда засунул EXE в PEiD, он сказал: "Borland Delphi 3.0 [Overlay]". Засунул EXE в Restorator все ресурсы видны, их можно править и сохранить. Но при запуске прога снова ругается: "Runtime error 101 at 001B9496". Это привело меня к мысли что в проге стоит проверка контрольной суммы. Хотелось бы в краткой форме понять как с этим бороться. Дайте краткую инструкцию к действию как находить проверки в коде. Какие инструменты подойдут, как их применить. Поскольку я только начинающий, хочется разобраться в вопросе и научиться преодолевать подобные трудности в дальнейшем. Заранее спасибо! ![]() |
|
Создано: 18 августа 2008 20:46 · Личное сообщение · #2 |
|
Создано: 18 августа 2008 20:58 · Личное сообщение · #3 |
|
Создано: 18 августа 2008 21:13 · Личное сообщение · #4 |
|
Создано: 18 августа 2008 22:03 · Личное сообщение · #5 |
|
Создано: 19 августа 2008 01:24 · Личное сообщение · #6 |
|
Создано: 19 августа 2008 18:04 · Личное сообщение · #7 |
|
Создано: 19 августа 2008 20:37 · Поправил: gazlan · Личное сообщение · #8 tekton пишет: прядок действий при снятии контрольной суммы Контрольная сумма - это довольно размытое понятие, так что общего подхода здесь нет. Но именно для стандартной CRC32 (CCITT), обычно, годится такой алгоритм 1. Находим сам полином 0xEDB88320 (CC, KANAL etc) 2. Находим где строится таблица (либо, где она хранится) 3. Находим где, собственно, происходит подсчет CRC. Находим ссылки на эту функцию и расставляем там брэйки. (Часто удобно поставить BPM в SI и посмотреть, откуда нас вызвали). 4. Обычно, в обработчике CRCлибо сохраняется для дальнейшего использования, либо непосредственно используется в вычислениях (для вычисления адреса, пароль для дешифровки итд). Для получения неискаженного значения CRC необходимо использовать именно BPM. То место, где получено значение CRC, обычно и самое удобное для патча (например, для замены MOV adr, EAX на MOV adr, CRC32 - то есть, на константу). В любом случае, действия сводятся к подмене вычисленного значения на корректное, найденное при прогоне оригинальной (неизмененной) программы. В некоторых случаях, когда проверяется не память, а файл на диске, достаточно пропатчить имя файла, так чтобы считывался не проверяемый файл, а лежащий рядом оригинальный. Многие программы проверяют MD5 (и используют части хэша в вычислениях). В этом случае, возни намного больше. Другие используют "порченную" таблицу CRC32 (как CreateInstall, например) итп, так что всегда требуется тщательно проверять алго и константы вычисления хэша - они могут быть совсем не тем, что вы о них думаете (ex: Blowfisn in w*w.zexersoft.com)] ![]() |
|
Создано: 19 августа 2008 21:10 · Личное сообщение · #9 |
|
Создано: 22 августа 2008 10:14 · Личное сообщение · #10 tekton Возможно, дело не в самой проге, просто когда удаляешь ресурсы в прогах, написанных на Делфи, такое бывает всегда, потому что Делфи работают с ресурсами не так, как С++, и не любят, когда их удаляют, а если подправить там какое-то значение, то может и работать. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 23 августа 2008 12:28 · Личное сообщение · #11 |
|
Создано: 23 августа 2008 23:04 · Личное сообщение · #12 А почему в хью? Я вот тоже сидел в нём и паталогически избегал GUI... (думал это круто))) Как оказалось Hex WorkShop даже стабильнее, не говоря уже об удобстве. И помимо него ещё хватает - Nano HexEd, 010 Hex Editor и возможно другие. Хью для дос пусть. Еслиб он ещё команд строку поддерживал бы? Типа батники, тогдаб имело смысл... ![]() |
|
Создано: 24 августа 2008 03:37 · Личное сообщение · #13 |
![]() |
eXeL@B —› Программирование —› Контрольная сумма |