есть приложение.
нормально работает на висте
на ХР вылетает ошибка чтения по адресу 0x0015FAE0
есть желание это исцелить
смотрю виртуалную память(VMMap), выглядит так:
делаю такой ритуал:
когда вылетает ошибка, винда предлагает отладить все это дело в vs2005, жму ок
этот шайтан-софт призывает духов и показвает мне место вылета
ничего не делаю, смотрю виртуальную память
Может у страницы памяти стоит GUARD_PROTECTION_, и после первого эксепшена он снимается
[Ответ]
mexx 20:20 16.03.2009
xxx-men, людей такого левэла для решения проблемы на БВФ нет [Ответ]
Yandex 20:51 16.03.2009
mexx, не факт.
xxx-men, на wasm форуме или на sources.ru думаю быстрее ответ получишь.
[Ответ]
xxx-men 11:31 17.03.2009
Сообщение от quice:
Может у страницы памяти стоит GUARD_PROTECTION_, и после первого эксепшена он снимается
ничо там не стоит, участок памяти коротковат немного
на висте эксепшена нет ваще
загружаю в олю, она автоматом ставит паузу на первой инструкции, а этот участок памяти уже создан=> ОС его выделяет(?)
мож vcredist_x86.exe какойнибуть поставить? или .net? или еще какойнибуть "тьюненг"...
Сообщение от mexx:
xxx-men, людей такого левэла для решения проблемы на БВФ нет
1)не факт, вдрух есть
2)не факт что тут левел большой нужен
Сообщение от Yandex:
xxx-men, на wasm форуме или на sources.ru думаю быстрее ответ получишь.
вот мне тоже духи подсказывают что ответ всетаки есть[Ответ]
xxx-men 11:35 17.03.2009
заработало,
бубен это великий бог, и сила его безгранична
[Ответ]
опытным путем установлено:
абсолютно не важно что будет находица в памяти на тот момент,
значение по этому адресу закидываеют в стек и позже его затирают.
как обьяснить ОС что этот виртуальный адрес доступен?
[Ответ]
xxx-men 01:55 21.05.2009
типа up
ос рапределяет виртуальную память?
при помощи чудо_софта?
который имеет название?
который докуметирован?
которому можно поправить мозги?
короче в какую сторону копать, чтобы ОС разрешила интсрукцию push [XXXXXXXX] без ругательств???
[Ответ]
Part!zan 20:34 21.05.2009
xxx-men, че ты вообще делаешь-то? Раз ругается - значит надо.
[Ответ]
xxx-men 19:11 22.05.2009
Сообщение от Part!zan:
че ты вообще делаешь-то?
есть поциэнт запакованный фемидой + main накрыт злым обфускатором
есть китайский анпакер который фемиду снимает,
из за того что снимает криво получаю исключение на инструкции push [eax], Access violation reading location 0x0014fee0
Сообщение от Part!zan:
Раз ругается - значит надо.
да, перепрыгивание этой инструкции в дальнейшем ведет к краху поциэнта,
но он успевает выполнить все что от него требуют и потом встречает джамп на ExitProcess
все что надо крякнуто, только напрягает его юзать под отладчиком, хочу блин удобства.
[Ответ]
xxx-men 19:28 22.05.2009
как изгнать злых духов, наиболее адекватным способом?
предпологаемые пути решения:
1) писать загрущик для софта, кторый запустит его в дебаг режиме и будет глушить все исключения.
2)прописать поциэнту в импорт длл, которая будет упрашивать менеджер виртуальной памяти сделать этот адрес доступным
3)псведо_код функции main выглядит примерно так:
Сообщение от :
main
{
sub1(a1,a2,a3,a4,a5,a6,a7,a8,a9);//незнаю что значат параметры, но 99% что это константы
return 0;
};
задача запустить sub1,
тоесть надо вписать в поциэнта свою безглючную функцию main...
Сообщение от Part!zan: xxx-men, ну а изменить значение eax на какое-нть хорошее?
пишу туда 0x00150000(или любой другой доступный адрес), все работает
даже если перепрыгиваю инструкцию, тоже работает.
Сообщение от Part!zan:
заnopить push?
там накрыто очень злым обфускатором(Code Virtualizer),
перед ошибкой через этот push программа проходит около 1000 раз, после ошибки ~50 000 проходов
иногда эта инструкция кидает в стек очень нужные значения, типа адресов апи функций и т.д.
Сообщение от Part!zan:
И вообще, может у тебя просто у секций кривые атрибуты стоят?