Конференция "Прочее" » Программа для создания врапперов
 
  • @!!ex © (17.09.08 23:03) [0]
    http://yupiistudio.com/Soft/HookMaker.rar

    Благодарю за помощь:
    Palladin, Renegat.

    Прога на входе получает три параметра:
    1) файл со списком функций
    2) Название длл, которую надо заменить
    3) Новое название оригинальной длл

    На выходе получаем dpr и pas, которые должны без проблем компилится и работать.
    Во всяком случае сейчас заменил OpenGL32.dll в Half-Life, все без проблем заработало.
  • KilkennyCat © (17.09.08 23:15) [1]
    а мне где спасибо? :)
  • {RASkov} © (17.09.08 23:18) [2]
    и мне... и мне... :)
  • {RASkov} © (17.09.08 23:18) [3]
    HookMaker.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.
  • KilkennyCat © (17.09.08 23:26) [4]
    Деньги назад!
  • {RASkov} © (17.09.08 23:44) [5]
    > Деньги назад!


    > и мне... и мне... :)
  • KilkennyCat © (17.09.08 23:48) [6]
    То есть, каждому!
    :)
  • Германн © (18.09.08 01:47) [7]

    > KilkennyCat ©   (17.09.08 23:48) [6]
    >
    > То есть, каждому!
    >

    330?
  • KilkennyCat © (18.09.08 01:55) [8]
    Германн, приезжай в Питер, выпьем абсенту...
  • Германн © (18.09.08 02:18) [9]

    > KilkennyCat ©   (18.09.08 01:55) [8]
    >
    > Германн, приезжай в Питер, выпьем абсенту...
    >

    Все приглашения в шестую палату, плииз. Правила уважаем, да?
  • KilkennyCat © (18.09.08 02:20) [10]
    Во-вторую, наверное, все-таки...
    А где нарушение правил?
  • Германн © (18.09.08 02:50) [11]

    > KilkennyCat ©   (18.09.08 02:20) [10]
    >
    > Во-вторую, наверное, все-таки...
    > А где нарушение правил?
    >

    Ну можно и во-вторую. Но лучше в шестую.
  • @!!ex © (18.09.08 08:31) [12]
    > [3] {RASkov} ©   (17.09.08 23:18)
    > HookMaker.exe - обнаружена ошибка. Приложение будет закрыто.
    > Приносим извинения за неудобства.

    А можно поподробне??
  • Шмелъ (18.09.08 08:36) [13]
    У мну тоже "обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства." сразу после запуска (правда без параметров)
  • @!!ex © (18.09.08 08:59) [14]
    Интересное кино, куда-то пропал exit...
    И когда я успел его удалить??

    Исправил.
  • KilkennyCat © (18.09.08 09:04) [15]
    ексит не интересует. интересует: деньги выслал?
    Каждому!
  • @!!ex © (18.09.08 10:07) [16]
    > [15] KilkennyCat ©   (18.09.08 09:04)

    Конечно.
    Всю сумму вернул. :)
  • {RASkov} © (18.09.08 11:47) [17]
    > [12] @!!ex ©   (18.09.08 08:31)
    > А можно поподробне??

    Чтоб не гадалось.... в [13] подробно. Т.е.

    > сразу после запуска (правда без параметров)


    > [14] @!!ex ©   (18.09.08 08:59)
    > Исправил.

    Ну и отличненько...:)
  • Slym © (18.09.08 12:00) [18]
    @!!ex ©   (18.09.08 10:07) [16]
    Верни опенсурсом :)
  • Virgo_Style © (18.09.08 13:59) [19]
    Вы сначала ее обратно закачайте, а потом уж деньги требуйте.
  • Правильный$Вася (18.09.08 14:38) [20]

    > Интересное кино, куда-то пропал exit

    т.е. теперь враппит в вечном цикле, пока не уложит систему в позу [3]?
  • pasha_golub © (18.09.08 14:44) [21]
    Еще раз. ШО это такое? я не понял. извините
  • Palladin © (18.09.08 14:46) [22]
    создатель fake библиотек, транслирующих вызовы в не fake библиотеки :)
  • pasha_golub © (18.09.08 14:47) [23]
    Ух ты. А зачем?
  • Renegat © (18.09.08 14:50) [24]
    Ну вот хотя бы для перехвата функций. Вызывает кто-то функцию, а управление получаем мы!
  • @!!ex © (18.09.08 15:36) [25]
    Вообще такие dll позволяют переписывать часть приложения не имея исходного кода.
    Вообще это затеял четыре дня назад, чтобы улучшить качество графики(уже добавил антиальязинг) и прикрутить шейдеры(вот тут проблема, но не в том, чтобы прикрутить шейдеры, а в том, чтобы они функционально соответствовали стандартному конвееру) к движку игры Half-Life 1.
  • @!!ex © (18.09.08 15:50) [26]
    > [20] Правильный$Вася   (18.09.08 14:38)

    Нет. Там вот такой код был:
    program HookMaker;

    {$APPTYPE CONSOLE}

    uses
     SysUtils,
     Maker2 in 'Maker2.pas';

    begin
     { TODO -oUser -cConsole Main : Insert code here }
     Writeln('Create by @!!ex. Samara 2008');
     Writeln('Thanx: Palladin, Renegat, www.delphimaster.ru');
     if ParamCount<>3 then begin
       Writeln('HookMaker.exe <FuncList> <HookDllName> <OriginalDllName>');
       Writeln('Example: HookMaker.exe funcs.txt OpenGL32.dll Original_OpenGL32.dll');
       exit;//Этого екзита не было.
     end;

     CreateHook(ParamStr(1),ParamStr(2),ParamStr(3));
     Writeln('Press enter for exit...');
     Readln;
    end.


    Если exit убрать, то без параметров попытается вызвать CreateHook и естественно упадет.
  • pasha_golub © (18.09.08 17:03) [27]

    > @!!ex ©   (18.09.08 15:36) [25]
    >
    > Вообще такие dll позволяют переписывать часть приложения
    > не имея исходного кода.

    Можно пример? А то я нужности ну не понимаю нифига.
  • @!!ex © (18.09.08 18:13) [28]
    > [27] pasha_golub ©   (18.09.08 17:03)
    > Можно пример? А то я нужности ну не понимаю нифига.


    Я уже привел.
    Можно посмотреть как меняется графика в том же GTA:SA при подключении подставной либы dx9 с реализованным блумом.
    А вообще то что вам это не нужно - ну так я за вас рад, не используйте. :)
  • @!!ex © (18.09.08 18:32) [29]
    Кстати ссылка.
    Особенно различие видно на нижних скринах:
    http://boris-vorontsov.narod.ru/ss_gtasa_ru.htm

    Правда там длл не только блум добавляет, но еще бамп, отражения и тени.
  • @!!ex © (18.09.08 18:38) [30]
  • {RASkov} © (18.09.08 20:16) [31]
    > [30] @!!ex ©   (18.09.08 18:38)

    А как сделал скрин на одном и том же практически месте? :) ...с разными dll)
  • @!!ex © (18.09.08 20:52) [32]
    > [31] {RASkov} ©   (18.09.08 20:16)

    ну так что мешает в длл по условию(например нажатие клавиши) либо просто перенаправлять вызов, либо делать какой-то вызов.
    Например, у меня в коде сейчас есть вот такая штука:
    procedure glEnd(); stdcall;
    begin
     OrigGL.glEnd();
     if (NDC<>0) then
       if (GetAsyncKeyState(VK_RETURN) and $8000) <> 0 then
         unitOldOpenGL32.wglSwapBuffers(NDC);
     On_glEndAfter();
    end;



    Смысл простой. если нажата клавиша Ентер, то экран меняется после рисования каждого элемента сцены, а не ждет полного завершения отрисовки. В итоге можно понаблюдать как постепенно из кусочков строится сцена. :) Очень позновательно. :))
    У Бориса просто отлавливаются нажатия определенных в ini файле конопок и включается или выключается некий эффект по нажатию. ничего сложного.
  • @!!ex © (18.09.08 22:38) [33]
    Вот сделал специально примерчик. :)
    Режим переключается нажатием одной кнопки, а 4 секунды разницы, это из-за того, что надо переключить режим, нажать принтскрин, перейти к паинту, нажать контрол+в, перейти обратно в игру, переключить режим, сделать принсткрин еще раз.

    http://img68.imageshack.us/my.php?image=csnormalef2.jpg
    http://img220.imageshack.us/my.php?image=csgrayqv0.jpg

    Сейчас пробую с лайтмапами поэкспериментировать. Если получится - удастася уйти от этих жутких ступенек на границе...
    Шейдер обещает быть не порстым...
  • {RASkov} © (18.09.08 22:47) [34]
    > [33] @!!ex ©   (18.09.08 22:38)

    Одна "Ч/Б" другая в цвете. В этом вся разница? :)
  • VirEx © (18.09.08 22:49) [35]
    интересная штука..
  • @!!ex © (18.09.08 22:57) [36]
    > [34] {RASkov} ©   (18.09.08 22:47)

    Ну не буду же я тратить два часа на то, чтобы написать сертезный фильтр. :))
    чб тоже все прекрасно демострирует, а кода в шейдере - 2 лишних строчки.
  • pasha_golub © (19.09.08 11:34) [37]

    > А вообще то что вам это не нужно - ну так я за вас рад,
    > не используйте. :)

    Ну шо вы сразу все в штыки? Может действительно нужно, а я не доганяю.
  • @!!ex © (19.09.08 16:15) [38]
    > [37] pasha_golub ©   (19.09.08 11:34)

    Да не в штыки. Просто если не нужно, ну и отлично. Меньше проблем. :))

    Вот чего добился. Эффекты, правда еще сырые, и сделать их достаточно сложно, потому что в глубь движка никто не пускает... :(

    Взрыв.
    Было:
    img81.imageshack.us/my.php?image=csexplosionwu3.jpg
    Стало:
    img228.imageshack.us/my.php?image=csexplosionhazead3.jpg

    Окно.
    Было:
    img228.imageshack.us/my.php?image=cswindownormaltj8.jpg
    Стало:
    img81.imageshack.us/my.php?image=cswindowbloomzr7.jpg

    P.S.
    Наро, может кто знает как сделать.
    проблема первая:
     Haze искажает все на кадре, а реально он не может исказить что находится ближе источника искажения... как можно от этого избавится??
    проблема вторая:
     Как сделать нормальный Bloom??? То что у меня получается мне вообще не нравится... и инфы адекватной найти не могу...
  • @!!ex © (19.09.08 16:16) [39]
    P.P.S.
    Еще водичка классная получилось, но в статике она не смотрится вообще, а видео ролик я буду сто лет заливать...
  • @!!ex © (19.09.08 17:40) [40]
    А вот и водичка.
    http://ifolder.ru/8198263
    правда видео захвачено 5 кадров в секунду, но суть вполне передает. :)
    Прошу прощения, что на ifolder'e - но у меня больше нигде нет доступа по FTP.
 
Конференция "Прочее" » Программа для создания врапперов
Есть новые Нет новых   [134442   +14][b:0][p:0.002]