Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Здравствуйте, dar veter, Вы писали:
ПК>>>Компилятор может хранить смещение в vtbl, адрес функции или еще что-нибудь — это его личное дело. Главное, чтобы полученный объект можно было использовать для косвенных вызовов методов класса C.
DV>> И всего прочитаного я понял так, что на уровне разработки программы я не могу встроить код дешифровки, так DV>> как я не могу с точночтью определить область памяти, где находится процедура для терзания ?
ПК>Более того, даже если ты сможешь определить адрес (а платформенно-зависимые методы, естественно, имеются), далеко не на всех системах ты сможешь модифицировать само тело функции по указанному адресу.
Рассматривается только система Windows, а она позволяет модифицировать тело функции по указаному адресу.
И потом AsProtect работает и модифицирует код, но там другая система
DV>> Если так, то получается что в коде необходимо предусматривать место для встраивания кода дешифровки.....
ПК>Похоже, ты выбрал неверный инструмент для своей задачи.
Возможно .....
DV>> А внешней патчилкой выполнять данную ставку и криптовать функцию ???
ПК>Лучше подними новый топик в соответствующем форуме ("Win API" или "Низкоуровневое программирование").
Окей.... но пожалуй я останавлюсь и не буду разводить еще один флейм.....
to All: Всем спасибо, кто откликнулся ... Я очень Вам всем благодарен, за то что поучили чайника
Здравствуйте, Dima2, Вы писали:
D>Здравствуйте, dar veter, Вы писали:
D>прочитай внимательно топик, который я дал, там есть ответы на твои вопросы, и несколько вариантов защиты криптованием кода программы.
Спасибо за урл.... я как раз этим занимаюсь
DV>>>Если я правильно понимаю, то в ptr хранится должен быть адрес метода Proc1 ?? DV>>>Или что то другое ????
DV>>>Как мне выполнить приведение ptr к числу .... (int)ptr непрокатывает, ошибка "type cast" ? DV>>>И как мне выполнить приведение памяти по адресу ptr к массиву символов .... DV>>>(unsigned char*)ptr .... таже ошибка....
DV>>>Заранее спасибо за ответ.... Вот такая мне кривость понадобилась .... DV>>>P.S.В предыдущих топиках ... Address Methods ... и Адрес Метода ответа не нашел
EW>> EW>>
EW>>Ed.ward
DV>Работает однако .... видно мне С еще учить и учить
К С (илди С++) это никакого отношения не имеет. Рассматриваемое привдение типа в С++ невозможно в принципе. О чем тебе и сообщает компилятор. Зачем ты пытаешься его произвести — я не знаю.
[skipped]
АТ>К С (илди С++) это никакого отношения не имеет. Рассматриваемое привдение типа в С++ невозможно в принципе. О чем тебе и сообщает компилятор. Зачем ты пытаешься его произвести — я не знаю.
Я уже это понял... а всякие другие извраты могут привести к краху.... мне это объяснил Павел Кузнецов.
Нужно мне было это для получения адреса памяти функции для ее декриптовки.... занимаюсь проблемой защиты своих
программ. Вообщем нашел я другое решение ... немного кривое ... но вроде работает на 100% .... пользуюсь тем, что
компилятор делает флат-модель кода
Здравствуйте, dar veter, Вы писали:
DV> программ. Вообщем нашел я другое решение ... немного кривое ... но вроде работает на 100% .... пользуюсь тем, что DV> компилятор делает флат-модель кода
Здравствуйте, Dima2, Вы писали:
D>Здравствуйте, dar veter, Вы писали:
DV>> программ. Вообщем нашел я другое решение ... немного кривое ... но вроде работает на 100% .... пользуюсь тем, что DV>> компилятор делает флат-модель кода
D>Ну уж раскажи тогда, а то прям заинтриговал.
Ну не знаю на сколько действительно для других компиляторов, но для MSVC 6.0 действительно ....
что я делаю ... перед искомой процедурой пишу абстрактную процедуру типа :
В итоге получаю, что взятие адреса &StartSecretFunc равно адресу области памяти
метода класса &C::SecretFunc. Я думаю это связано с создание компилятора флат-модели кода.
Ну а дальше выполняю дикриптовку секретной функции, выполняю ее и криптую заново...
Пока работает, проверил на 8 компах и разных операционках ... от Win95 OSR2 до Win2000 Prof....
XP только не тестил ... нету у меня ее....
P.S. Возможно профи мне возразят ... и я не претендую на свой профионализм.... Так как хорошо знаю
только язык Паскаль в Борландской интерпритации (9 лет). "С" всегда знал по скольку по стольку, на
базовом уровне.
Здравствуйте, dar veter, Вы писали:
DV>В итоге получаю, что взятие адреса &StartSecretFunc равно адресу области памяти DV>метода класса &C::SecretFunc.
Ух... круто. Сомневаюсь что на это можно положится. Тестить на разных ОС наверное не надо, надо тестить с разными установками компилятора, линкера.
Здравствуйте, Dima2, Вы писали:
D>Здравствуйте, dar veter, Вы писали:
DV>>В итоге получаю, что взятие адреса &StartSecretFunc равно адресу области памяти DV>>метода класса &C::SecretFunc.
D>Ух... круто. Сомневаюсь что на это можно положится. Тестить на разных ОС наверное не надо, надо тестить с разными установками компилятора, линкера.
Эх .... проверял ... вроде работает(постучу по деревяжке), в программе уже таким способом закриптовано 4
процедуры из разных классов .... и потом более лучщего решения я не нашел ... да и времени на поиск его нет.
Может всетаки куплю AsProtect в будующем ... а пока оставлю так как есть
P.S. Правда проверил на Borland C++ 5.5 free compiler ... такая фигня не прокатила,пока не разбирался в
чем собака порыта. Некогда,кушать охота ... Будет время, деассемблирую его код и гляну, в чем дело.