All pastes #92762 Raw Edit

Anonymous

public text v1 · immutable
#92762 ·published 2006-07-19 21:58 UTC
rendered paste body
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

      .486                      ; create 32 bit code
      .model flat, stdcall      ; 32 bit memory model
      option casemap :none      ; case sensitive 

;     include files
;     ~~~~~~~~~~~~~
      
      include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
include HackLib.inc

;     libraries
;     ~~~~~~~~~

      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib

	  includelib HackLib.lib
    ; ----------------------------------------
    ; prototypes for local procedures go here
    ; ----------------------------------------

      .data
 hInstance dd ?
junk byte 20 dup (000h)
n1 db "DDInitFullScreen",0
n2 db "DDInitWindowScreen",0
ndll db "dxengine.dll",0
nwindow db "window.dll",0
hdll1 HANDLE ?
hdll2 HANDLE ?
aDDInitFullScreen PVOID ?
aDDInitWindowScreen PVOID ?
oldprotect DWORD ?
noldprotect DWORD ?
      .code

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
ThreadProc proc p1:DWORD, p2:DWORD
invoke LoadLibrary,addr nwindow
mov hdll2, eax
invoke GetModuleHandle,addr ndll
mov hdll1, eax
invoke GetProcAddress,hdll1,addr n1
mov aDDInitFullScreen, eax
invoke GetProcAddress,hdll2,addr n2
mov aDDInitWindowScreen, eax
invoke VirtualProtect,aDDInitFullScreen,5,PAGE_EXECUTE_READWRITE,addr oldprotect
invoke HookFunctionJMP, aDDInitFullScreen, aDDInitWindowScreen,addr junk,5
invoke VirtualProtect,aDDInitFullScreen,5,oldprotect,addr noldprotect
invoke ExitThread,0
	ret
ThreadProc endp
LibMain proc instance:DWORD,reason:DWORD,unused:DWORD 

    .if reason == DLL_PROCESS_ATTACH
      push instance
      pop hInstance
      mov eax, TRUE
invoke CreateThread,0,0,addr ThreadProc,0,0,addr junk
    .elseif reason == DLL_PROCESS_DETACH

    .elseif reason == DLL_THREAD_ATTACH

    .elseif reason == DLL_THREAD_DETACH

    .endif

    ret

LibMain endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

  comment * -----------------------------------------------------
          You should add the procedures your DLL requires AFTER
          the LibMain procedure. For each procedure that you
          wish to EXPORT you must place its name in the "sp3W.def"
          file so that the linker will know which procedures to
          put in the EXPORT table in the DLL. Use the following
          syntax AFTER the LIBRARY name on the 1st line.
          LIBRARY sp3W
          EXPORTS YourProcName
          EXPORTS AnotherProcName
          ------------------------------------------------------- *

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

end LibMain