Русский / Russian English / Английский

Сейчас на форуме: dezmand07, zds, soft (+5 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Ошибка BEX (APPCRASH)
Посл.ответ Сообщение

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 09:16 New!
Цитата · Личное сообщение · #1

Пропатчил приложение.
Суть простая: подгрузить DLL, сгенерировать в ней данные, заменить существующие.
Пишутся данные в RW секцию, созданную загрузчиком, но тем не менее вылетает ошибка доступа.
При этом под отладчиком или админскими правами - заводится.

Вопрос: почему не даёт писать и решаемо ли это без "официальных" админ прав?

Ранг: 17.3 (новичок)
Статус: Участник

Создано: 18 октября 2019 12:25 New!
Цитата · Личное сообщение · #2

Слишком мало информации, чтобы что-то советовать. Где файлы для теста?

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 13:35 New!
Цитата · Личное сообщение · #3

Lambda, сомневаюсь, что наличие "неполноценного" экзешника и моей ДЛЛ принципиално.
ДЛЛ без ини-файла работать не будет, а в нем личная инфа...
Да и повторюсь, проблема, по моему, распространенная не уникальная, где-то попадалось на глаза такое, найти токо не могу, думаю, люди "постарше" нас, направление раскопок или результат, даже, и без атача подскажут...
Мне на сегодня и такое покатит, но на будущее стоило бы знать что-почему...

Ранг: 17.3 (новичок)
Статус: Участник

Создано: 18 октября 2019 13:36 New!
Цитата · Личное сообщение · #4

AE, "будем посмотреть"

| Сообщение посчитали полезным: AE


Ранг: 307.2 (мудрец)
Статус: Модератор
CrackLab

Создано: 18 октября 2019 13:49 New!
Цитата · Личное сообщение · #5

AE "личную инфу" можешь выпилить, и сварганить тестовый набор. а если ты рассчитываешь, что все кинуться ванговать варики почему не воркает, то у меня для тебя плохие новости.

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 14:20 New!
Цитата · Личное сообщение · #6

SReg пишет:
а если ты рассчитываешь, что все кинуться ванговать варики почему не воркает, то у меня для тебя плохие новости.

Это не новости, а просто констатация факта.

Я немного протормозил, загрузка инфы идет после ошибки, так что должно быть достаточно 2х файлов....

Еще чуть-чуть подумав...
- Не зря же разного рода "патчеры" работают от админа, наверное это единственный способ, на самом деле....

На всякий случай, вдруг кому-то не лень, (http://multi-up.com/1244058)

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 18 октября 2019 14:52 New!
Цитата · Личное сообщение · #7

step-by-step trace:
1. Загрузили dll'ку (без админа)
2. Создается секция с RW (API VirtualAlloc?)
3. Туда пишутся данные внутри процесса из dll'ки (или API WriteProcessmemory?)
>вынаходитесьздесь< возникает ошибка ACCESS_VIOLATION?
4. Success write data to RW page

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 15:34 New!
Цитата · Личное сообщение · #8

ELF_7719116
Создается секция с RW на точке входа приложения секция уже создана - не мною
Туда пишутся данные внутри процесса из dll'ки совершенно верно, я первым делом ZeroMemory по адресам делаю (на ней и вылет), то есть есть смысл попробовать WriteProcessmemory?
возникает ошибка ACCESS_VIOLATION ну а какая же...

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 18 октября 2019 16:24 New!
Цитата · Личное сообщение · #9

AE пишет:
на точке входа приложения секция уже создана - не мною

AE пишет:
ACCESS_VIOLATION ну а какая же...

точно RW в этом месте? результат VirtualQuery в студию?

AE пишет:
то есть есть смысл попробовать WriteProcessmemory?

Нет
AE пишет:
ZeroMemory по адресам делаю (на ней и вылет

чем memset не понравился?

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 16:56 New!
Цитата · Личное сообщение · #10

ELF_7719116 пишет:
RW в этом месте? результат VirtualQuery в студию?
4
Я в начале стартонул менять протект, даже удивился, что мне ето спокойно дало сделать, проверил, а он и был 4
ELF_7719116 пишет:
чем memset не понравился?

а разница? Те же яйца, только напрямую без 2х оберток

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 18 октября 2019 17:58 New!
Цитата · Личное сообщение · #11

AE пишет:
а разница?

непросто так спрашиваю, в каком именно месте валится: CLCreator.(char __stdcall) GetCommandString??
AE пишет:
ДЛЛ без ини-файла работать не будет, а в нем личная инфа...

ну да, а то что в самой dll напихано "личной инфы" (ip, secrectkey, creds) это normalno. просто код, который пишет в секцию оставить, лишнее убрать.

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 18:28 New!
Цитата · Личное сообщение · #12

ELF_7719116 пишет:
просто код, который пишет в секцию оставить, лишнее убрать.

спалили....да там много чего личШнОего осталось....не догнал что так можно сделать... ну да ладно....

ELF_7719116 пишет:
непросто так спрашиваю, в каком именно месте валится

Так вот, если убрать ZeroMemory, то на strcpy_s (выходит)... и сообщение краша меняется

При наличии ZeroMemory
Code:
  1. Имя события проблемы:      APPCRASH
  2.   Имя приложения: EVPCastle.exe
  3.   Версия приложения:       0.12.1361.46670
  4.   Отметка времени приложения:       5a312448
  5.   Имя модуля с ошибкой:    ntdll.dll
  6.   Версия модуля с ошибкой: 6.1.7601.24475
  7.   Отметка времени модуля с ошибкой: 5cdd7f6d
  8.   Код исключения: c0000005
  9.   Смещение исключения:     00033497
  10.   Версия ОС:      6.1.7601.2.1.0.256.1
  11.   Код языка:      1049
  12.   Дополнительные сведения 1:        0a9e
  13.   Дополнительные сведения 2:        0a9e372d3b4ad19135b953a78882e789
  14.   Дополнительные сведения 3:        0a9e
  15.   Дополнительные сведения 4:        0a9e372d3b4ad19135b953a78882e789

Без
Code:
  1.  Имя события проблемы:     BEX
  2.   Имя приложения: EVPCastle.exe
  3.   Версия приложения:       0.12.1361.46670
  4.   Отметка времени приложения:       5a312448
  5.   Имя модуля с ошибкой:    StackHash_0a9e
  6.   Версия модуля с ошибкой: 0.0.0.0
  7.   Отметка времени модуля с ошибкой: 00000000
  8.   Смещение исключения:     6465656e
  9.   Код исключения: c0000005
  10.   Данные исключения:       00000008
  11.   Версия ОС:      6.1.7601.2.1.0.256.1
  12.   Код языка:      1049
  13.   Дополнительные сведения 1:        0a9e
  14.   Дополнительные сведения 2:        0a9e372d3b4ad19135b953a78882e789
  15.   Дополнительные сведения 3:        0a9e
  16.   Дополнительные сведения 4:        0a9e372d3b4ad19135b953a78882e789

Признаюсь сразу - честно: понятия не имею, что это за модуль "StackHash_0a9e" такой, в смысле что это значит...
Вы мне случайно не на "предотвращение выполнения данных (DEP)" намекаете?

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 18 октября 2019 18:47 New!
Цитата · Личное сообщение · #13

намекаю, чтобы вы показали в каком именно месте происходит крэш
библиотека CLCreator, процедура (char __stdcall) GetCommandString??
приаттачится и показать/скопипастить код, который вызывает ntdll и стек вызовов

в GetCommandString не так много участков кода которые чистят регионы, но это не то:
Code:
  1.  memset(Dst, 0, Size);
  2.   memset(a3, 0, a4);
  3.   v4 = CreateFileW(L"AuthorizationMessages.txt", 0x81u, 0, 0, 3u, 1u, 0);
  4. ...
  5. LABEL_18:
  6.     v39 = 0;
  7.     v40 = 15;
  8.     LOBYTE(Buf) = 0;
  9.     memove_x(&Buf, &v42, strlen(&v42));
  10. ...
  11.   strcpy_s(*(char **)&name.sa_data[2], v13, (const char *)NumberOfBytesRead);

Ранг: 7.1 (гость)
Статус: Участник

Создано: 18 октября 2019 19:36 · Поправил: AE New!
Цитата · Личное сообщение · #14

В общем, после беседы с вами, я решил еще раз перепроверить МБоксами свою функцию(естественно без ZeroMemory) - все пишется, все работает до последнего Рет (в смысле функ отрабатывает целиком)....

Приатачившись на ошибке стек вызовов нас отправляет к WaitForMultipleObjectsEx (NtWaitForMultipleObjects)...

Ранг: 138.0 (ветеран)
Статус: Участник

Создано: 19 октября 2019 19:04 New!
Цитата · Личное сообщение · #15

AE
Ты столько понаписал в теме, но даже не удосужился показать стек вызовов на момент краша. Твой мегакодес очевидно запорол либо стек либо кучу, либо все вместе. Либо виновато текущее окружение твоей ОС.


Ранг: 322.3 (мудрец)
Статус: Участник

Создано: 19 октября 2019 21:48 New!
Цитата · Личное сообщение · #16

Это ведь самая простая ошибка(#AV) из возможных. Если бы была ошибка по синхронизации, то в таком случае причину довольно сложно найти. Но в этом случае разбор исключения столь прост, что даже нет смысла это обсуждать. ТС бери инфу про фаулт(EXCEPTION_RECORD+CONTEXT) и разбирай логическую цепь. Сделай это сам.

Ранг: 7.1 (гость)
Статус: Участник

Создано: 19 октября 2019 23:00 · Поправил: AE New!
Цитата · Личное сообщение · #17

Alchemistry пишет:Твой мегакодес очевидно запорол либо стек либо кучу, либо все вместе.
- Стек, на момент выхода из моего участка, настолько непорочен, что даже представить себе сложно нужно, что это так!
- Куча? Я, не использую кучу напрямую, только через STL...
- Про CallStack я писал, думал достаточно, завтра пруфы выложу
- Почему под Админом никакой херни нету???

difexacaw пишет:
Если бы была ошибка по синхронизации, то в таком случае причину довольно сложно найти.

....в общем, завтра скрины выложу...
Поток попытался прочитать или записать виртуальный адрес, для которого у него нет соответствующего доступа. По моему именно это и происходит...


Ранг: 322.8 (мудрец)
Статус: Участник

Создано: 20 октября 2019 00:38 New!
Цитата · Личное сообщение · #18

AE пишет:
 Имя модуля с ошибкой:    StackHash_0a9e
  Версия модуля с ошибкой: 0.0.0.0
  Отметка времени модуля с ошибкой: 00000000
  Смещение исключения:     6465656e
  Код исключения: c0000005
  Данные исключения:       00000008


Без ZeroMemory в секции мусор и каким-то образом передаётся управление по адресу 0x6465656e. А такой секции нет, об этом говорят данные исключения: 8. Если заметить, 0x6465656e напоминает часть какой-то ASCII-строки - "need". Подумай, откуда это.

Ранг: 138.0 (ветеран)
Статус: Участник

Создано: 20 октября 2019 06:40 New!
Цитата · Личное сообщение · #19

AE пишет:
- Стек, на момент выхода из моего участка, настолько непорочен, что даже представить себе сложно нужно, что это так!

Так покажи его полностью. Что ты скрываешь? Тема - гадание на кофейной гуще.

AE пишет:
- Почему под Админом никакой херни нету???


Потому что под админом у тебя ВНЕЗАПНО другое окружение. Простой пример - под админом в АП твоей программы может не быть некоего стороннего кода, который просто туда не может попасть из-за разграничения прав. Это настолько элементарно, что у меня возникли серьезные вопросы зачем ты полез куда-то со своим патчем не имея даже базовых знаний об отладке и ОС?

Ранг: 7.1 (гость)
Статус: Участник

Создано: 20 октября 2019 09:30 New!
Цитата · Личное сообщение · #20

DenCoder пишет:
Без ZeroMemory в секции мусор
, если бы просто мусор, проблемы бы не было, мусор и мусор.... я наверное "что-то важное" затираю.... я думал об этом в первую очередь, с толку сбивало различие в поведении при предоставлении прав.... Alchemistry пишет, что запросто, надо проверить
ZeroMemory не дает использовать... для меня, например, это тот еще вопрос: почему записать туда я могу а просто обнулить нет?

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 20 октября 2019 10:58 New!
Цитата · Личное сообщение · #21

AE
Назовите хотя бы одну вразумительную причину, почему Вы до сих пор не скопипастили стек после вызовов (его скриншот) при возникновении исключения?? Дальнейшее обсуждение темы без тех данных бессмысленно, топик - кандидат на закрытие.

Если последний вызов перед фолтом где-то в библиотеке CLCreator, то в каком месте - разберитесь для начала с этим, а потом задавайте вопросы.

| Сообщение посчитали полезным: BlackCode



Ранг: 546.1 (!)
Статус: Участник
оптимист

Создано: 20 октября 2019 12:17 New!
Цитата · Личное сообщение · #22

AE
Засунь код в обработчик исключений и чекай ошибку

Ранг: 7.1 (гость)
Статус: Участник

Создано: 20 октября 2019 12:22 · Поправил: AE New!
Цитата · Личное сообщение · #23

ELF_7719116 пишет:
Назовите хотя бы одну вразумительную причину, почему Вы до сих пор не скопипастили стек после вызовов

Ночью - спал, утром - дома не было (есть свидетели).

Первый вариант
Code:
  1. bool __stdcall GetCommandString(_Out_ void* ASCIILine, size_t ASCIISize, _Out_ void* UnicodeLine, size_t UnicodeSize)
  2. {
  3.          memset(ASCIILine, 0, ASCIISize); -> приводит к ошибке
  4.         MessageBox(NULL, L"memset", L"", MB_OK); не высвечивается
  5.          memset(UnicodeLine, 0, UnicodeSize);
  6.          ...
  7.          ...
  8.          ...
  9.          return true;
  10. }

Code:
  1. Сигнатура проблемы:
  2.   Имя события проблемы:    APPCRASH
  3.   Имя приложения: EVPCastle.exe
  4.   Версия приложения:       0.12.1361.46670
  5.   Отметка времени приложения:       5a312448
  6.   Имя модуля с ошибкой:    ntdll.dll
  7.   Версия модуля с ошибкой: 6.1.7601.24475
  8.   Отметка времени модуля с ошибкой: 5cdd7f6d
  9.   Код исключения: c0000005
  10.   Смещение исключения:     00033497
  11.   Версия ОС:      6.1.7601.2.1.0.256.1
  12.   Код языка:      1049
  13.   Дополнительные сведения 1:        0a9e
  14.   Дополнительные сведения 2:        0a9e372d3b4ad19135b953a78882e789
  15.   Дополнительные сведения 3:        0a9e
  16.   Дополнительные сведения 4:        0a9e372d3b4ad19135b953a78882e789

CallStack


Второй вариант
Code:
  1. bool __stdcall GetCommandString(_Out_ void* ASCIILine, size_t ASCIISize, _Out_ void* UnicodeLine, size_t UnicodeSize)
  2. {
  3.          /*
  4.         memset(ASCIILine, 0, ASCIISize);
  5.          memset(UnicodeLine, 0, UnicodeSize);
  6.         */
  7.          ...
  8.          ...
  9.          ...
  10.         MessageBox(NULL, L"Funk End", L"", MB_OK); Выводится
  11.          return true;
  12. }

Code:
  1. Сигнатура проблемы :
  2. Имя события проблемы : BEX
  3. Имя приложения : EVPCastle.exe
  4. Версия приложения : 0.12.1361.46670
  5. Отметка времени приложения : 5a312448
  6. Имя модуля с ошибкой : StackHash_0a9e
  7. Версия модуля с ошибкой : 0.0.0.0
  8. Отметка времени модуля с ошибкой : 00000000
  9. Смещение исключения : 6465656e
  10. Код исключения : c0000005
  11. Данные исключения : 00000008
  12. Версия ОС : 6.1.7601.2.1.0.256.1
  13. Код языка : 1049
  14. Дополнительные сведения 1 : 0a9e
  15. Дополнительные сведения 2 : 0a9e372d3b4ad19135b953a78882e789
  16. Дополнительные сведения 3 : 0a9e
  17. Дополнительные сведения 4 : 0a9e372d3b4ad19135b953a78882e789

CallStack


Добавлено спустя 5 минут
ClockMan пишет:
Засунь код в обработчик исключений и чекай ошибку

Попробую, мб чудо случится...


Ранг: 546.1 (!)
Статус: Участник
оптимист

Создано: 20 октября 2019 12:37 New!
Цитата · Личное сообщение · #24

AE пишет:
memset(ASCIILine, 0, ASCIISize); -> приводит к ошибке

вопрос к ASCIILine указатель на строку где находится? скрин строки памяти со всеми атребутами, есть ли по тому адресу сама строка, может её там ещё нет?))


Ранг: 322.8 (мудрец)
Статус: Участник

Создано: 20 октября 2019 13:40 · Поправил: DenCoder New!
Цитата · Личное сообщение · #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?

Ранг: 7.1 (гость)
Статус: Участник

Создано: 20 октября 2019 18:49 New!
Цитата · Личное сообщение · #26

DenCoder пишет:
Засунь код в обработчик исключений и чекай ошибку
херамба, а не ошибка....
Проверенные ексепшены:
Code:
  1. - std::exception
  2. - char *
  3. - int
  4. - ...

Может пропустил какое?

Надо по другому попробовать....

AE пишет:
Попробую, мб чудо случится...

не срослось с чудом кароче

Ранг: 405.9 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 20 октября 2019 20:32 · Поправил: ELF_7719116 New!
Цитата · Личное сообщение · #27

AE пишет:
memset(ASCIILine, 0, ASCIISize); -> приводит к ошибке

ORLY? В таком случае, оно бы и у меня воспроизводилось, и наверняка, в отладчике. Указатели в кучу смотрели, насколько помню. С таким же успехом оно могло и в загрузчике exe крашиться.
Если там что-то в стеке и затирается, то, наиболее вероятно, при получении данных по сокету. Внизу, был цикл, который из recv в буфер байты тащит.
Сделайте уже, пожалуйста, switch на главный поток и покажите стек вызовов. WaitForMultipleObjects принадлежит отладочному потоку.

bartolomeo пишет:
почему самому не выделить память то ?)

... встеке. petrosyan.jpg
Она из heap в загрузчике у него выделялась, но это не точно.
Проблема в том, что:
а) краш воспроизводится только у ТС
б) ТС не нашел до сих пор примерное место, где возникает краш. Это может быть, как и криво реализованный лоадер в точке входа exe, так и при вызове процедуры dllки из него.

Ранг: 38.6 (посетитель)
Статус: Участник

Создано: 20 октября 2019 20:32 · Поправил: bartolomeo New!
Цитата · Личное сообщение · #28

а почему самому не выделить память то ?)

ещё вариант поставить железный бряк на память которую затираешь - и увидеть кто ещё в том кусочке памяти хранит свои потроха.

Ранг: 307.2 (мудрец)
Статус: Модератор
CrackLab

Создано: 21 октября 2019 02:22 New!
Цитата · Личное сообщение · #29

AE
Это не форум гадалок, я тебе 3 дня назад это сообщил. Как соизволишь показать тестовый файл, чтобы воспроизвести твою проблему, напишешь и открою.
 eXeL@B —› Крэки, обсуждения —› Ошибка BEX (APPCRASH)
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ