![]() |
eXeL@B —› Протекторы —› Вопрос по ASProtect |
Посл.ответ | Сообщение |
|
Создано: 04 декабря 2005 00:59 · Поправил: ToBad · Личное сообщение · #1 Всем кто делал загрузчики для программ защищённых аспротектом не вдаваясь в вопросы распаковки и восстановления импорта наверняка приходилось видеть сообщение Protection Error: 15. Решения были в виде патча с небольшой задержкой, что бы аспр успел проверить память. На практике это работало через раз, что совершенно не допустимо в серьёзных проектах. Я задался целью отключить проверку целостности кода, но столкнулся с проблемой. В моём случае нужные места в распакованной программе располагаются в адресах 401000 - 550000, а тело аспра, проверка кода и некоторые места например NAG окна в адресах > B42000. Всё отлично работает и патчится, но только на моём компе. Проблема возникает именно со вторым диапазоном адресов. Посоветуйте как можно вычислять адрес тела аспра или как его заставить всегда оказываться в нужном месте. ![]() ![]() |
|
Создано: 04 декабря 2005 01:04 · Личное сообщение · #2 |
|
Создано: 04 декабря 2005 01:10 · Личное сообщение · #3 |
|
Создано: 04 декабря 2005 01:31 · Личное сообщение · #4 |
|
Создано: 04 декабря 2005 01:31 · Поправил: Ara · Личное сообщение · #5 |
|
Создано: 04 декабря 2005 06:05 · Личное сообщение · #6 |
|
Создано: 04 декабря 2005 06:56 · Личное сообщение · #7 |
|
Создано: 04 декабря 2005 11:53 · Личное сообщение · #8 |
|
Создано: 04 декабря 2005 13:39 · Личное сообщение · #9 |
|
Создано: 04 декабря 2005 14:33 · Личное сообщение · #10 |
|
Создано: 05 декабря 2005 00:26 · Личное сообщение · #11 Aspr.crc.locator делает тоже самое, к чему стремлюсь я. Просто я это делал руками. Прога интересная, но моя задача упростить этот процесс и делать это на лету во время работы собственного загрузчика. Вот результат работы aspr.crc.locator на одной и той же программе на 2-х компах: 1) XP Sp0 - 00B426A0 Win98 - 00D126A0 2) XP Sp2 - 00A826A0 Win98 - 012226A0 Вопрос в том, как и по какой причине аспр использует одну и ту же область памяти на конкретном компьютере с конкретной виндой. От чего это зависит ? Почему не разную область во время каждого запуска ? Почему у себя я всегда вижу B426A0 ??? Может кто то знает ответ на этот вопрос ? Помогите понять ! Не от железа же это зависит ? Сейчас планирую капать дальше испытав варианты предложенные r99 и TOG. Pavka - спасибо за интересную прогу. Очень оказалась кстати. Вообще всем огромное спасибо за помощь, советы и комментарии ! Ничего не оставлю без внимания ! ![]() |
|
Создано: 05 декабря 2005 10:00 · Поправил: Maximus · Личное сообщение · #12 Можно вычислить смещение относительно вызова из реального адреса... Типа например: C твоей машины идет 401000: call B42000 На другой 401000: call B82000 Значить адреса патчей тебе надо править на B82000-B42000=40000h Если нужно будет могу выслать пример) А про ожидание: можно например ждать первую форму приложения, если это дельфи то это наверняка TApplication ----- StarForce и Themida ацтой! ![]() |
|
Создано: 05 декабря 2005 11:11 · Поправил: TOG · Личное сообщение · #13 |
|
Создано: 05 декабря 2005 11:41 · Личное сообщение · #14 |
|
Создано: 05 декабря 2005 12:22 · Поправил: TOG · Личное сообщение · #15 Maximus пишет: StartForm:=FindWindow(PAnsiChar(wStart), nil); Ну вот и посчитай сколько раз будет вызвана эта ф-я . (если вызывать ее часто, те высокий приоритет у твоего лоадера, то это сильно загрузит процессор и загружаемая прога будет грузиться долго. А если низкий приоритет лоадеру поставить - редко вызывать ф-ю FindWindow, то она сработает не в момент создания окна а намного позже и будет уже позняк.) Я делал через FindWindow, это кранты . ![]() |
|
Создано: 05 декабря 2005 12:43 · Поправил: Maximus · Личное сообщение · #16 TOG Сколько же занимает твоя прога то... Я так подгружал 8 метровую прогу, окошко перехватывалось ВСЕГДА, а за счет того что патчем отключались ненужные проверки, прога грузилась БЫСТРЕЙ с лоадером чем без него... Короче в любом случае дело твое, я просто попытался помочь...) P.S: Процессор грузить не будет, думаешь это тут зря? While PeekMessage(Msg, 0, 0, 0, 1) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; ----- StarForce и Themida ацтой! ![]() |
|
Создано: 05 декабря 2005 13:37 · Поправил: TOG · Личное сообщение · #17 Maximus пишет: Сколько же занимает твоя прога то... Дык, проги с протекторами всегда долго грузятся. А что про загрузку проца...... ты попробуй сделать CreateProcess(lpPhotoshop......), ну или еще какого нибудь монстра, который и так-то секунд 20 грузится и поставь этот свой цикл с FindWindow - минут 5 грузиться будет ![]() ![]() |
![]() |
eXeL@B —› Протекторы —› Вопрос по ASProtect |