Smazat příspěvek

 Chystáte se smazat zprávu (se všemi případnými odpověďmi) z kategorie Hlavní diskuze:


19.02.2016 (02:24:45)
8-bit obalka (web) :
Pánové, zabývá se tady někdo z vás programováním DLLek? Řekněme, že bych chtěl např. do shell32.dll (64b verze) nebo jiné existující 64b dllky v céčku přidat vlastní funkci. Jakým způsobem by to bylo nejsnadněji řešitelné? Vím že se často používá tzv. proxy DLL, která v podstatě linkuje funkce z originální knihovny a může některé nahrazovat nebo přidávat nové. Nevíte o nějakých automatizovaných nástrojích co by udělaly kostru zdrojáku a popř. jiné podklady pro projekt v M$VS? Chvíli jsem hledal a našel jsem jen na codeproject docela obskurní prográmek wrappit2, resp. jeho kód (ten naštěstí šel na rozdíl od různých tzv. multiplatformních hromad sraček v pohodě zkompilovat pod M$VS). Každopádně nezdá se, že by z něj lezlo co by správně mělo, soudě podle cpp souboru ve kterém skoro nic není. Vygenerovaly se tyto soubory:

shell32.dll.1.def
shell32.dll.2.def - některý z nich by se měl přidat do projektu v M$VS?
shell32.dll.cpp - nějaké krátké, přikládám dole
shell32.dll.exp - tohle nemám nejmenší tušení na co je
shell32.dll.exports - že by jen nějaký mezikrok pro vygenerování zbytku?
shell32.dll.lib - tu bych správně neměl potřebovat, nebo snad jo?
shell32old.dll - 1:1 kopie původní DLLky, jen pod jiným názvem (aby proxy nelinkovala stejnojmennou DLLku?).

Dokázali byste někdo poradit, jestli je to, co mi to vygrclo, v pořádku, jak to použít a jakým způsobem bych mohl přidat novou funkci? A nebo mám na to jít úplně jinak? Díky za případnou pomoc.

shell32.dll.cpp
#include <windows.h> #include <tchar.h> HINSTANCE hLThis = 0; HINSTANCE hL = 0; FARPROC p[466] = {0}; BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) { if (reason == DLL_PROCESS_ATTACH) { hLThis = hInst; hL = LoadLibrary(_T("shell32OLD.DLL")); if (!hL) return false; } if (reason == DLL_PROCESS_DETACH) { FreeLibrary(hL); } return 1; } // toť vše

shell32.dll.1.def
EXPORTS Activate_RunDLL @105 AppCompat_RunDLLW @106 CDefFolderMenu_Create @700 CDefFolderMenu_Create2 @701 CallCPLEntry16 @166 CheckEscapesA @107 CheckEscapesW @108 ... pro každou funkci

shell32.dll.2.def
EXPORTS Activate_RunDLL=shell32OLD.Activate_RunDLL @105 AppCompat_RunDLLW=shell32OLD.AppCompat_RunDLLW @106 CDefFolderMenu_Create=shell32OLD.CDefFolderMenu_Create @700 CDefFolderMenu_Create2=shell32OLD.CDefFolderMenu_Create2 @701 CallCPLEntry16=shell32OLD.CallCPLEntry16 @166 CheckEscapesA=shell32OLD.CheckEscapesA @107 CheckEscapesW=shell32OLD.CheckEscapesW @108 ... pro každou funkci
19.02.2016 (06:48:59)
Pavel_P:
Udelej wrapper, zabal DLL do vlastní DLL.
19.02.2016 (11:50:28)
8-bit obalka (web) :
Nemáš prosím tě přesnější technologický postup, popř. link na nějaký tutorial?
19.02.2016 (17:25:34)
RayeR (web) :
A nekoukals na web toho japoncika, co dela KeX pro W2K, jesi tam nema i zdrojaky?
https://translate.google.com/translate?sl=ja&tl=en&js=y...
Pripadne mu napsat...
BTW sou 2 typy volani fci z DLL, pres nazev funkce a pres ordinalni cislo, ja znam pres LoadLibrary jen ten 1. zpusob...
19.02.2016 (23:35:13)
8-bit obalka (web) :
Jo, díval jsem se na to ale bohužel jsem kloudného nenašel, ani zdrojáky, ani technologický postup **02


Přezdívka:*
Heslo:*

███   ███   ███   
  █     █     █   
███   ███   ███   
█     █       █   
███   ███   ███   
Opiš:*

Zde můžete smazat vlastní vlákno nebo kteroukoliv odpověď v něm. Můžete smazat vlastní odpověď v cizím vlákně, pokud na ni ještě nikdo jiný nereagoval. Mazat cizí vlákna a odpovědi v nich mohou pouze admini. Smazání příspěvku je nevratná operace! Smazáním vzkazu se smažou i odpovědi na něj.
Seznam uživatelů
Zpět na knihu