Сейчас на форуме: vsv1, NIKOLA, r0lka, johnniewalker (+4 невидимых) |
eXeL@B —› Крэки, обсуждения —› Ошибка BEX (APPCRASH) |
Посл.ответ | Сообщение |
|
Создано: 18 октября 2019 09:16 · Личное сообщение · #1 Пропатчил приложение. Суть простая: подгрузить DLL, сгенерировать в ней данные, заменить существующие. Пишутся данные в RW секцию, созданную загрузчиком, но тем не менее вылетает ошибка доступа. При этом под отладчиком или админскими правами - заводится. Вопрос: почему не даёт писать и решаемо ли это без "официальных" админ прав? |
|
Создано: 18 октября 2019 12:25 · Личное сообщение · #2 |
|
Создано: 18 октября 2019 13:35 · Личное сообщение · #3 Lambda, сомневаюсь, что наличие "неполноценного" экзешника и моей ДЛЛ принципиално. ДЛЛ без ини-файла работать не будет, а в нем личная инфа... Да и повторюсь, проблема, по моему, Мне на сегодня и такое покатит, но на будущее стоило бы знать что-почему... |
|
Создано: 18 октября 2019 13:36 · Личное сообщение · #4 |
|
Создано: 18 октября 2019 13:49 · Личное сообщение · #5 |
|
Создано: 18 октября 2019 14:20 · Личное сообщение · #6 SReg пишет: а если ты рассчитываешь, что все кинуться ванговать варики почему не воркает, то у меня для тебя плохие новости. Это не новости, а просто констатация факта. Я немного протормозил, загрузка инфы идет после ошибки, так что должно быть достаточно 2х файлов.... Еще чуть-чуть подумав... - Не зря же разного рода "патчеры" работают от админа, наверное это единственный способ, на самом деле.... На всякий случай, вдруг кому-то не лень, (http://multi-up.com/1244058) |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 18 октября 2019 14:52 · Личное сообщение · #7 |
|
Создано: 18 октября 2019 15:34 · Личное сообщение · #8 ELF_7719116 Создается секция с RW на точке входа приложения секция уже создана - не мною Туда пишутся данные внутри процесса из dll'ки совершенно верно, я первым делом ZeroMemory по адресам делаю (на ней и вылет), то есть есть смысл попробовать WriteProcessmemory? возникает ошибка ACCESS_VIOLATION ну а какая же... |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 18 октября 2019 16:24 · Личное сообщение · #9 AE пишет: на точке входа приложения секция уже создана - не мною AE пишет: ACCESS_VIOLATION ну а какая же... точно RW в этом месте? результат VirtualQuery в студию? AE пишет: то есть есть смысл попробовать WriteProcessmemory? Нет AE пишет: ZeroMemory по адресам делаю (на ней и вылет чем memset не понравился? |
|
Создано: 18 октября 2019 16:56 · Личное сообщение · #10 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 18 октября 2019 17:58 · Личное сообщение · #11 AE пишет: а разница? непросто так спрашиваю, в каком именно месте валится: CLCreator.(char __stdcall) GetCommandString?? AE пишет: ДЛЛ без ини-файла работать не будет, а в нем личная инфа... ну да, а то что в самой dll напихано "личной инфы" (ip, secrectkey, creds) это normalno. просто код, который пишет в секцию оставить, лишнее убрать. |
|
Создано: 18 октября 2019 18:28 · Личное сообщение · #12 ELF_7719116 пишет: просто код, который пишет в секцию оставить, лишнее убрать. спалили....да там много чего личШнОего осталось....не догнал что так можно сделать... ну да ладно.... ELF_7719116 пишет: непросто так спрашиваю, в каком именно месте валится Так вот, если убрать ZeroMemory, то на strcpy_s (выходит)... и сообщение краша меняется При наличии ZeroMemory Code:
Без Code:
Признаюсь сразу - честно: понятия не имею, что это за модуль "StackHash_0a9e" такой, в смысле что это значит... Вы мне случайно не на "предотвращение выполнения данных (DEP)" намекаете? |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 18 октября 2019 18:47 · Личное сообщение · #13 намекаю, чтобы вы показали в каком именно месте происходит крэш библиотека CLCreator, процедура (char __stdcall) GetCommandString?? приаттачится и показать/скопипастить код, который вызывает ntdll и стек вызовов в GetCommandString не так много участков кода которые чистят регионы, но это не то: Code:
|
|
Создано: 18 октября 2019 19:36 · Поправил: AE · Личное сообщение · #14 В общем, после беседы с вами, я решил еще раз перепроверить МБоксами свою функцию(естественно без ZeroMemory) - все пишется, все работает до последнего Рет (в смысле функ отрабатывает целиком).... Приатачившись на ошибке стек вызовов нас отправляет к WaitForMultipleObjectsEx (NtWaitForMultipleObjects)... |
|
Создано: 19 октября 2019 19:04 · Личное сообщение · #15 |
|
Создано: 19 октября 2019 21:48 · Личное сообщение · #16 Это ведь самая простая ошибка(#AV) из возможных. Если бы была ошибка по синхронизации, то в таком случае причину довольно сложно найти. Но в этом случае разбор исключения столь прост, что даже нет смысла это обсуждать. ТС бери инфу про фаулт(EXCEPTION_RECORD+CONTEXT) и разбирай логическую цепь. Сделай это сам. ----- vx |
|
Создано: 19 октября 2019 23:00 · Поправил: AE · Личное сообщение · #17 Alchemistry пишет:Твой мегакодес очевидно запорол либо стек либо кучу, либо все вместе. - Стек, на момент выхода из моего участка, настолько непорочен, что даже представить себе - Куча? Я, не использую кучу напрямую, только через STL... - Про CallStack я писал, думал достаточно, завтра пруфы выложу - Почему под Админом никакой херни нету??? difexacaw пишет: Если бы была ошибка по синхронизации, то в таком случае причину довольно сложно найти. ....в общем, завтра скрины выложу... Поток попытался прочитать или записать виртуальный адрес, для которого у него нет соответствующего доступа. По моему именно это и происходит... |
|
Создано: 20 октября 2019 00:38 · Личное сообщение · #18 AE пишет: Имя модуля с ошибкой: StackHash_0a9e Версия модуля с ошибкой: 0.0.0.0 Отметка времени модуля с ошибкой: 00000000 Смещение исключения: 6465656e Код исключения: c0000005 Данные исключения: 00000008 Без ZeroMemory в секции мусор и каким-то образом передаётся управление по адресу 0x6465656e. А такой секции нет, об этом говорят данные исключения: 8. Если заметить, 0x6465656e напоминает часть какой-то ASCII-строки - "need". Подумай, откуда это. ----- IZ.RU |
|
Создано: 20 октября 2019 06:40 · Личное сообщение · #19 AE пишет: - Стек, на момент выхода из моего участка, настолько непорочен, что даже представить себе сложно нужно, что это так! Так покажи его полностью. Что ты скрываешь? Тема - гадание на кофейной гуще. AE пишет: - Почему под Админом никакой херни нету??? Потому что под админом у тебя ВНЕЗАПНО другое окружение. Простой пример - под админом в АП твоей программы может не быть некоего стороннего кода, который просто туда не может попасть из-за разграничения прав. Это настолько элементарно, что у меня возникли серьезные вопросы зачем ты полез куда-то со своим патчем не имея даже базовых знаний об отладке и ОС? |
|
Создано: 20 октября 2019 09:30 · Личное сообщение · #20 DenCoder пишет: Без ZeroMemory в секции мусор , если бы просто мусор, проблемы бы не было, мусор и мусор.... я наверное "что-то важное" затираю.... я думал об этом в первую очередь, с толку сбивало различие в поведении при предоставлении прав.... Alchemistry пишет, что запросто, надо проверить ZeroMemory не дает использовать... для меня, например, это тот еще вопрос: почему записать туда я могу а просто обнулить нет? |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 20 октября 2019 10:58 · Личное сообщение · #21 AE Назовите хотя бы одну вразумительную причину, почему Вы до сих пор не скопипастили стек после вызовов (его скриншот) при возникновении исключения?? Дальнейшее обсуждение темы без тех данных бессмысленно, топик - кандидат на закрытие. Если последний вызов перед фолтом где-то в библиотеке CLCreator, то в каком месте - разберитесь для начала с этим, а потом задавайте вопросы. | Сообщение посчитали полезным: BlackCode |
|
Создано: 20 октября 2019 12:17 · Личное сообщение · #22 |
|
Создано: 20 октября 2019 12:22 · Поправил: AE · Личное сообщение · #23 ELF_7719116 пишет: Назовите хотя бы одну вразумительную причину, почему Вы до сих пор не скопипастили стек после вызовов Ночью - спал, утром - дома не было (есть свидетели). Первый вариант Code:
Code:
CallStack Второй вариант Code:
Code:
CallStack Добавлено спустя 5 минут ClockMan пишет: Засунь код в обработчик исключений и чекай ошибку Попробую, мб чудо случится... |
|
Создано: 20 октября 2019 12:37 · Личное сообщение · #24 |
|
Создано: 20 октября 2019 13:40 · Поправил: DenCoder · Личное сообщение · #25 AE На скринах WaitForMultipleObjects() относится к обработчику твоего краха. Да и к тому же это в треде, который не относится к ошибке доступа... Из стека треда, в котором произошло исключение, надо вылавливать EXCEPTION_POINTERS... В 7ке не знаю, как включить более подробный отчёт. Но лучше всего сделать, как сказал Clockman: ClockMan пишет: Засунь код в обработчик исключений и чекай ошибку Это try-catch Проверь адрес и размер. AE пишет: bool __stdcall GetCommandString(_Out_ void* ASCIILine, size_t ASCIISize, _Out_ void* UnicodeLine, size_t UnicodeSize) Количество аргументов точно 4? Точно __stdcall? ----- IZ.RU |
|
Создано: 20 октября 2019 18:49 · Личное сообщение · #26 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 20 октября 2019 20:32 · Поправил: ELF_7719116 · Личное сообщение · #27 AE пишет: memset(ASCIILine, 0, ASCIISize); -> приводит к ошибке ORLY? В таком случае, оно бы и у меня воспроизводилось, и наверняка, в отладчике. Указатели в кучу смотрели, насколько помню. С таким же успехом оно могло и в загрузчике exe крашиться. Если там что-то в стеке и затирается, то, наиболее вероятно, при получении данных по сокету. Внизу, был цикл, который из recv в буфер байты тащит. Сделайте уже, пожалуйста, switch на главный поток и покажите стек вызовов. WaitForMultipleObjects принадлежит отладочному потоку. bartolomeo пишет: почему самому не выделить память то ?) ... встеке. petrosyan.jpg Она из heap в загрузчике у него выделялась, но это не точно. Проблема в том, что: а) краш воспроизводится только у ТС б) ТС не нашел до сих пор примерное место, где возникает краш. Это может быть, как и криво реализованный лоадер в точке входа exe, так и при вызове процедуры dllки из него. |
|
Создано: 20 октября 2019 20:32 · Поправил: bartolomeo · Личное сообщение · #28 |
|
Создано: 21 октября 2019 02:22 · Личное сообщение · #29 |
eXeL@B —› Крэки, обсуждения —› Ошибка BEX (APPCRASH) |
Эта тема закрыта. Ответы больше не принимаются. |