Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Need programming help with DLL

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming
View previous topic :: View next topic  
Author Message
rain-13
Expert Cheater
Reputation: 0

Joined: 18 Mar 2009
Posts: 110

PostPosted: Tue Jun 21, 2011 3:15 pm    Post subject: Need programming help with DLL Reply with quote

I am trying to hook function that takes wchar_t* , int as arguments but I keep getting error when I compile. Could anyone help me fix those errors or atleast tell me how I could possibly fix them?

Following code is DLL main file based on this: http://www.codeproject.com/KB/DLL/funapihook.aspx

I am not good at C++ which means that telling me that I shouldn't use something wouldn't help if not added what to use instead.

Code:
#include <windows.h>
#include <cstdio>

#define SIZE 6 //Number of bytes needed to redirect

typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT);
void __stdcall MyMessageBoxW(wchar_t* , int);

void BeginRedirect(LPVOID);

pMessageBoxW pOrigMBAddress = NULL;
BYTE oldBytes[SIZE] = {0}; //This will hold the overwritten bytes
BYTE JMP[SIZE] = {0};   //This holds the JMP to our code
DWORD oldProtect, myProtect = PAGE_EXECUTE_READWRITE; //Protection settings on memory
char debugBuffer[128]; //Used for DbgView

INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved)
{
   switch(Reason)
   {
   case DLL_PROCESS_ATTACH:
      pOrigMBAddress = (pMessageBoxW) //Get MessageBoxW pointer
         0x6FB2D850;// MY CUSTOM ADDRESS IN GAME
      if(pOrigMBAddress != NULL)
         BeginRedirect(MyMessageBoxW);   //Valid? Redirect
      break;
   case DLL_PROCESS_DETACH:
      memcpy(pOrigMBAddress, oldBytes, SIZE);
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
      break;
   }
   return TRUE;
}

void BeginRedirect(LPVOID newFunction)
{
   sprintf_s(debugBuffer, 128, "pOrigMBAddress: %x", pOrigMBAddress);
   OutputDebugString(debugBuffer);
   BYTE tempJMP[SIZE] = {0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3}; //JMP <NOP> RET for now
   memcpy(JMP, tempJMP, SIZE); //Copy into global for convenience later
   DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5); //Get address difference
   VirtualProtect((LPVOID)pOrigMBAddress, SIZE, PAGE_EXECUTE_READWRITE, &oldProtect);
         //Change memory settings to make sure we can write the JMP in
   memcpy(oldBytes, pOrigMBAddress, SIZE); //Copy old bytes before writing JMP
   sprintf_s(debugBuffer, 128, "Old bytes: %x%x%x%x%x", oldBytes[0], oldBytes[1],
      oldBytes[2], oldBytes[3], oldBytes[4], oldBytes[5]);
   OutputDebugString(debugBuffer);
   memcpy(&JMP[1], &JMPSize, 4); //Write the address to JMP to
   sprintf_s(debugBuffer, 128, "JMP: %x%x%x%x%x", JMP[0], JMP[1],
      JMP[2], JMP[3], JMP[4], JMP[5]);
   OutputDebugString(debugBuffer);
   memcpy(pOrigMBAddress, JMP, SIZE); //Write it in process memory
   VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL); //Change setts back
}

void  WINAPI MyMessageBoxW(wchar_t* Message, int color)
{
   VirtualProtect((LPVOID)pOrigMBAddress, SIZE, myProtect, NULL); //ReadWrite again
   memcpy(pOrigMBAddress, oldBytes, SIZE); //Unhook API
   MessageBoxW(NULL, L"This should pop up", L"Hooked MBW", MB_ICONEXCLAMATION);
   memcpy(pOrigMBAddress, JMP, SIZE); //Rehook API
   VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL); //Normal setts
}


Error
Code:
1>------ Build started: Project: APIHook, Configuration: Debug Win32 ------
1>Build started 21.06.2011 23:34:09.
1>InitializeBuildStatus:
1>  Touching "Debug\APIHook.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>LINK : fatal error LNK1201: error writing to program database 'C:\Users\*\Desktop\APIHook\Debug\APIHook.pdb'; check for insufficient disk space, invalid path, or insufficient privilege
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.31
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Here's project file id anyone needs that:
Code:
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
   ProjectType="Visual C++"
   Version="9.00"
   Name="APIHook"
   ProjectGUID="{5CBB36DC-E7CC-43F1-B662-DCFB566F3412}"
   RootNamespace="APIHook"
   Keyword="Win32Proj"
   TargetFrameworkVersion="196613"
   >
   <Platforms>
      <Platform
         Name="Win32"
      />
   </Platforms>
   <ToolFiles>
   </ToolFiles>
   <Configurations>
      <Configuration
         Name="Debug|Win32"
         OutputDirectory="$(SolutionDir)$(ConfigurationName)"
         IntermediateDirectory="$(ConfigurationName)"
         ConfigurationType="2"
         CharacterSet="1"
         >
         <Tool
            Name="VCPreBuildEventTool"
         />
         <Tool
            Name="VCCustomBuildTool"
         />
         <Tool
            Name="VCXMLDataGeneratorTool"
         />
         <Tool
            Name="VCWebServiceProxyGeneratorTool"
         />
         <Tool
            Name="VCMIDLTool"
         />
         <Tool
            Name="VCCLCompilerTool"
            Optimization="0"
            PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;APIHOOK_EXPORTS"
            MinimalRebuild="true"
            BasicRuntimeChecks="3"
            RuntimeLibrary="3"
            UsePrecompiledHeader="0"
            WarningLevel="3"
            DebugInformationFormat="4"
         />
         <Tool
            Name="VCManagedResourceCompilerTool"
         />
         <Tool
            Name="VCResourceCompilerTool"
         />
         <Tool
            Name="VCPreLinkEventTool"
         />
         <Tool
            Name="VCLinkerTool"
            LinkIncremental="2"
            GenerateDebugInformation="true"
            SubSystem="2"
            TargetMachine="1"
         />
         <Tool
            Name="VCALinkTool"
         />
         <Tool
            Name="VCManifestTool"
         />
         <Tool
            Name="VCXDCMakeTool"
         />
         <Tool
            Name="VCBscMakeTool"
         />
         <Tool
            Name="VCFxCopTool"
         />
         <Tool
            Name="VCAppVerifierTool"
         />
         <Tool
            Name="VCPostBuildEventTool"
         />
      </Configuration>
      <Configuration
         Name="Release|Win32"
         OutputDirectory="$(SolutionDir)$(ConfigurationName)"
         IntermediateDirectory="$(ConfigurationName)"
         ConfigurationType="2"
         CharacterSet="1"
         WholeProgramOptimization="1"
         >
         <Tool
            Name="VCPreBuildEventTool"
         />
         <Tool
            Name="VCCustomBuildTool"
         />
         <Tool
            Name="VCXMLDataGeneratorTool"
         />
         <Tool
            Name="VCWebServiceProxyGeneratorTool"
         />
         <Tool
            Name="VCMIDLTool"
         />
         <Tool
            Name="VCCLCompilerTool"
            Optimization="2"
            EnableIntrinsicFunctions="true"
            PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;APIHOOK_EXPORTS"
            RuntimeLibrary="2"
            EnableFunctionLevelLinking="true"
            UsePrecompiledHeader="0"
            WarningLevel="3"
            DebugInformationFormat="3"
         />
         <Tool
            Name="VCManagedResourceCompilerTool"
         />
         <Tool
            Name="VCResourceCompilerTool"
         />
         <Tool
            Name="VCPreLinkEventTool"
         />
         <Tool
            Name="VCLinkerTool"
            LinkIncremental="1"
            GenerateDebugInformation="true"
            SubSystem="2"
            OptimizeReferences="2"
            EnableCOMDATFolding="2"
            TargetMachine="1"
         />
         <Tool
            Name="VCALinkTool"
         />
         <Tool
            Name="VCManifestTool"
         />
         <Tool
            Name="VCXDCMakeTool"
         />
         <Tool
            Name="VCBscMakeTool"
         />
         <Tool
            Name="VCFxCopTool"
         />
         <Tool
            Name="VCAppVerifierTool"
         />
         <Tool
            Name="VCPostBuildEventTool"
         />
      </Configuration>
   </Configurations>
   <References>
   </References>
   <Files>
      <Filter
         Name="Source Files"
         Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
         >
         <File
            RelativePath=".\APIHook.cpp"
            >
         </File>
      </Filter>
      <Filter
         Name="Header Files"
         Filter="h;hpp;hxx;hm;inl;inc;xsd"
         UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
         >
      </Filter>
      <Filter
         Name="Resource Files"
         Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
         UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
         >
      </Filter>
   </Files>
   <Globals>
   </Globals>
</VisualStudioProject>
Back to top
View user's profile Send private message
atom0s
Moderator
Reputation: 205

Joined: 25 Jan 2006
Posts: 8585
Location: 127.0.0.1

PostPosted: Tue Jun 21, 2011 5:04 pm    Post subject: Reply with quote

Your error is:
Code:
1>LINK : fatal error LNK1201: error writing to program database 'C:\Users\*\Desktop\APIHook\Debug\APIHook.pdb'; check for insufficient disk space, invalid path, or insufficient privilege


Meaning your disk is low on space. Delete some porn and try to compile again.

If you still get the issue, close VS, open that folder, and see if APIHook.pdb is readonly. If it is, uncheck the readonly flag.

_________________
- Retired.
Back to top
View user's profile Send private message Visit poster's website
Dark Byte
Site Admin
Reputation: 470

Joined: 09 May 2003
Posts: 25785
Location: The netherlands

PostPosted: Tue Jun 21, 2011 5:17 pm    Post subject: Reply with quote

and close external debuggers as well (cheat engine, windbg, etc...)
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
rain-13
Expert Cheater
Reputation: 0

Joined: 18 Mar 2009
Posts: 110

PostPosted: Wed Jun 22, 2011 4:46 am    Post subject: Reply with quote

there must be problem in code. because if I compiled original project from http://www.codeproject.com/KB/DLL/funapihook.aspx it compiles nicely but when I changed it to my needs it didn't anymore.

But your right. it worked thistime.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites