На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Исправление dll
    Есть dll (ест-но без исходников)
    В ней есть функция с известным мне именем которая возвращает bool-евское значение(в зависимости есть ли HASP или нет)

    Можно ли, и как исправить ее(dll) чтобы она всегда возвращала true;

    Объясните пожалуйста поподробнее если не трудно или дайте ссылку ...
    Заранее спасибо !!!
      А нашо оно тебе надобно, якшо оно возвращает усегда TRUE???
        Чтобы отучить ее от hasp`a
          Ну и зачем ее от ентого отучать?

          З.Ы. Чего ты сделать все-таки хочешь?, зачем в DLL менять?
            можно:)
            надоть дизассемблировать твою длл, найти место, где она рповеряет, и заменить это нужным куском кода (0x75 вместо 0x74 или 0x90 вместо всего подряд.) подробнее см www.reversing.net
              Привет :) Давненько не виделись  ;)
              Вообщем я пользовался такой технологией: сначала определяешь, где физически находится функция в DLL-модуле (т.е. ее адрес в файле). Потом залезаешь в файл hiew'вером (тот, который hiew), переходишь на этот адрес и вставляешь туда две инструкции - mov eax, 1 и ret.  ;D Правда, я думаю, те кто ставил защиту - не дураки - и защиту от этого дела поставили.
                Настроение отЦтой, так что буду злым...

                Какая вам разница, для чего это ему? Надо прогу вскрякнуть, но не умеет человек... А вам "для чего, для чего"... Я ответа не знаю, но думаю, что надо дизасьмить и менять одну строку (строку возврата)...
                  хе, надо тогда еще позаботится о том, чтобы парамы были правильно из стека выгружены:)

                  кстати, исчо просче это вывзо функции заменить на mov eax,1 только тоже надо на парамы смотреть.



                  а по поводу
                  Цитата
                  не дураки - и защиту от этого дела поставили

                  не так давно видел в нете статью (какой-то кракер писал), что современные разработчики все очень потупели, прстой правкой трех байтов большинство программ патчаться,
                  самая крутая защита -  навешивание ASPACK'a

                  конечно, не все разрабочики такие, и для профессионально крякера может действительно все легко, но все же счас о-о-очень много прог можно так вскрыть:)
                    Если тебе надо программно, можно попробовать сделать HOOK на эту функцию. Для Win9x легко, а для WinNT/2K, тоже можно, но я не делал, поищи в инете, например на codeguru.com или на codeproject.com
                      Цитата SUnteXx, 28.06.02, 01:07:06
                      Настроение отЦтой, так что буду злым...

                      Какая вам разница, для чего это ему? Надо прогу вскрякнуть, но не умеет человек... А вам "для чего, для чего"... Я ответа не знаю, но думаю, что надо дизасьмить и менять одну строку (строку возврата)...


                      мне кажется, что не так просто. тута речь шла тока об одном методе, которые возвращает TRUE или FALSE. ну вернул ты TRUE. но и что из того? внутренняя логика то не поменялась наверное. можно вообче не вызывать эту функцию, если ее назначение вернуть тока булевое значение. взял и сам своей переменной присвоил TRUE. другое дело, если функция должна вернуть некий объект. тогда я очень сильно сомневаюсь, что простая подмена булевой переменной помогет. и вообче, есть куча других методов в dll. каждая из них как то проверяет чтото. мне кажется, что внутри dll есть некая защищенная переменная, которая показывает, легальный хасп или нет.
                      а метод просто возвращает копию этой переменной, а не указатель. вот если бы найти эту переменную и поменять ее-совсем другое дело.
                        Цитата

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


                        Для этого и пременяются hooks.
                          А может врапер написать а из него вызывать все функции из настоящей DLL просто в нужной возвращать TRUE
                            Цитата the_moon, 28.06.02, 18:58:26
                            А может врапер написать а из него вызывать все функции из настоящей DLL просто в нужной возвращать TRUE


                            Да, нормальная идея, а на все дручие функции поставить заглушки (переходники) на нормальные, а параметры можно угадать с помощью Depends'a (по кол-ву байт)
                              Не проще ли поставить корректный rld.dll?
                                Цитата Kol4an @
                                Не проще ли поставить корректный rld.dll?

                                спс но уже того умер :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2614 ]   [ 16 queries used ]   [ Generated: 27.04.24, 01:42 GMT ]