eXeL@B —› Основной форум —› EXECryptor и CompareStringW |
Посл.ответ | Сообщение |
|
Создано: 15 февраля 2015 02:28 · Личное сообщение · #1 Попросили посмотреть одно приложение. Снял дамп с помощью EXECryptor unpacker by RSI. Импорт он не взял, прикрутил руками. При запуске падает на исключении Си++. Разобрал стек и проблема оказалась вот в чем: Code:
А теперь, господа знатоки, внимание вопрос! Какого хрена при отладке не распакованной программы эта функция возвращает 2 (строки равны), а при отладке распакованной возвращает 0? Более глубокий анализ дает понять, что для моей винды LOCALE_USER_DEFAULT является "ru_RU" и во внутренностях CompareStringW эту локаль функция не находит в случае распакованной программы и не вызывает саму функцию сравнению строк. GetLastError возвращает 0x57 - ERROR_INVALID_PARAMETER. Добавлено спустя 3 минуты Интересный комментарий в описании функции на MSDN: You should use CompareStringEx instead CompareStringEx handles locale names, enabling more scenarios and it is preferred. (Which, I think is why the dwCmpFlags are listed there, so that you go in the new API). LCIDs don't correctly handle custom/extended locales in all cases, being restricted to LOCALE_USER_DEFAULT for customs, which won't round trip. That's particularly interesting for Comparisons as you want to ensure you're building any index using consistent rules. |
|
Создано: 15 февраля 2015 15:05 · Личное сообщение · #2 |
|
Создано: 15 февраля 2015 15:10 · Личное сообщение · #3 Да вроде манифест живой. Вот распакованный файл: секции протектора убил руками. Импорт девственный, просто прописал в директорию импорта нужные значения (криптор его не тронул). |
|
Создано: 15 февраля 2015 15:32 · Личное сообщение · #4 |
|
Создано: 15 февраля 2015 15:38 · Личное сообщение · #5 vovanre Ну да, ее фины делают) Вообще конечно спать надо по ночам. Падает оно на самом деле вот здесь: Code:
Добавлено спустя 13 минут Короче ресурсы кривые... Добавлено спустя 33 минуты Блин, ну их на хрен эти распаковщики. Руками все надо делать... Секция ресурсов забита нулями почти полностью. Добавлено спустя 43 минуты Все, файл рабочий. Всем кто откликнулся - большое спасибо! |
eXeL@B —› Основной форум —› EXECryptor и CompareStringW |
Эта тема закрыта. Ответы больше не принимаются. |