Some problems in DLL. Please Help me!

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #36414
    bujin888
    Participant
    Quote:
    TEST OS: WIN7 32

    use rundll32.exe to load testdll.dll

    Mybe if host exe PEheader MajorSubsystemVersion not 0400! this erro will come

    modus vivendi:

    var

    GetSystemMetricsNext:Pointer;

    function MyGetSystemMetrics(nIndex: Integer): Integer; stdcall;

    type

    TGetSystemMetrics=function (nIndex: Integer): Integer; stdcall;

    begin

    Result:=TGetSystemMetrics(GetSystemMetricsNext)(nIndex);

    if (nIndex=7) OR (nIndex=32) then

    begin

    Result:=Result+5;

    end;

    end;

    procedure HookBorderWidth;

    var

    PebAddress:DWORD;

    ExeBase:DWORD;

    PEHeader:PImageNtHeaders;

    begin

    asm

    mov eax, fs:[$30]

    mov PebAddress, eax

    end;

    ExeBase:=PULONG(PebAddress+8)^;

    PEHeader:=Pointer(ExeBase+PImageDosHeader(ExeBase)._lfanew);

    if PEHeader.OptionalHeader.MajorSubsystemVersion=6 then

    begin

    HookDelphiFun(@GetSystemMetrics,@MyGetSystemMetrics,GetSystemMetricsNext);

    end;

    end;

    Quote:
    library testDll;

    uses

    Windows,

    Forms,

    SysUtils,

    Unit1 in 'Unit1.pas' {Form1};

    exports

    s;

    begin

    Application.Initialize;

    Application.MainFormOnTaskbar := True;

    Application.CreateForm(TForm1, Form1);

    Application.Run;

    end.

    run:

    Quote:
    C:WindowsSystem32rundll32.exe testdll.dll,s

    but

    #52997
    Stertor
    Participant

    Привет, я вообще не вижу здесь код 😐 То, что Вы написали – грязный хак.

    Вы можете подробно объяснить, что Вы хотите сделать?

    #52998
    bujin888
    Participant
    'Stertor' wrote:

    Привет, я вообще не вижу здесь код 😐 То, что Вы написали – грязный хак.

    Вы можете подробно объяснить, что Вы хотите сделать?

    if the executable program PEheader.MajorSubsystemVersion not 0x0400, alphaskins will make mistakes

    #53000
    Stertor
    Participant

    Выглядит так, что ошибка не в alphaskins.

    Вы пытаетесь создавать *.dll как обычное приложение с формой – это неправильно:

    begin

    Application.Initialize;

    Application.MainFormOnTaskbar := True;

    Application.CreateForm(TForm1, Form1);

    Application.Run;

    end.

    use only TForm.showmodal:

    Code:
    library Project1;

    uses
    //fastmm4,fastmm4messages,
    SysUtils,
    Classes,
    Unit1 in 'Unit1.pas' {Form1};

    {$R *.res}

    procedure test;stdcall; //rundll32 project1.dll,test
    var
    Form:TForm1;
    begin
    Form:=TForm1.Create(nil);
    Form.ShowModal;
    Form.destroy;
    end;

    exports test;
    begin
    end.

    #53019
    bujin888
    Participant

    if your DLL Working in WIN7 or WIN8 OS,And The host process is C:WindowsSystem32rundll32.exe,You will understand that I mean expression.

    You write the DLL DEMO,Loading in the following ways In win7,Error also occurs!

    Quote:
    C:WindowsSystem32rundll32.exe C:Project.dll,test

    If your host process is compiled by Delphi so there won't be a mistake,But if you host process is compiled by VC++ or other,

    and PEheader.MajorSubsystemVersion not 0x0400 ,Error will occur!In this way, we write DLL there is no way to call by the VC++ host process !

    #53022
    Stertor
    Participant

    Уважаемый bujin888! Мы не успели пообщаться долго – я не могу знать,насколько хорошо Вы знаете Delphi. Дело вовсе не в dll и host; нет существенной разницы, написан ли host на delphi или ином языке. На данный момент у меня установлена Delphi 7 и я не заметил никаких сбоев или других ошибок при тестировании моих примеров как в XP, так и в WIN 7.

    dll скомпилированные в Делфи совместимы со всеми программами, при условии что Вы используете в параметрах функций и процедур только

    pchar, integer, pointer. Вместе с тем Вы отказались привести полный код Вашего проекта, поэтому я не могу с точностью сказать в чем именно Ваша ошибка. Могу только предполагать, что Вы – тролль, который хочет в бан. Удачи в Ваших изысканиях. 🙄

Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.