* Minor code cleanup.

This commit is contained in:
Robert MacGregor 2019-07-14 18:20:15 -07:00
parent 99a5aa550e
commit 7dd6907521

View file

@ -34,15 +34,6 @@ namespace DX
return retval; return retval;
} }
bool memPatch(unsigned int addr, unsigned char * data, unsigned int size){
DWORD oldprotect=0;
DWORD oldnewprotect=0;
VirtualProtect((void *)addr,size,PAGE_EXECUTE_READWRITE,&oldprotect);
memcpy((void *)addr,(void*) data,size);
VirtualProtect((void *)addr,size,oldprotect,&oldnewprotect);
return true;
}
float memToFloat(unsigned int addr){ float memToFloat(unsigned int addr){
DWORD oldprotect=0; DWORD oldprotect=0;
DWORD oldnewprotect=0; DWORD oldnewprotect=0;
@ -73,15 +64,16 @@ namespace DX
VirtualProtect((void *)addr,size,PAGE_EXECUTE_READWRITE,&oldprotect); VirtualProtect((void *)addr,size,PAGE_EXECUTE_READWRITE,&oldprotect);
for (int i=0; i<size; i++) { for (int i=0; i<size; i++) {
if (spaces==true) { if (spaces==true) {
sprintf(hexdigits,"%02X ",*((unsigned char*)addr+i)); sprintf_s<20>(hexdigits,"%02X ",*((unsigned char*)addr+i));
} else { } else {
sprintf(hexdigits,"%02X",*((unsigned char*)addr+i)); sprintf_s<20>(hexdigits,"%02X",*((unsigned char*)addr+i));
} }
strncat(outstr,hexdigits,254-strlen(hexdigits)); strncat_s(outstr, 256, hexdigits, 254 - strlen(hexdigits));
} }
VirtualProtect((void *)addr,size,oldprotect,&oldnewprotect); VirtualProtect((void *)addr,size,oldprotect,&oldnewprotect);
strncpy(dst,outstr,255);
strncpy_s(dst, 256, outstr, 255);
return true; return true;
} }
@ -141,8 +133,9 @@ namespace DX
sprintf_s(ret, buffer_length, "%s/%s", modname, filename); sprintf_s(ret, buffer_length, "%s/%s", modname, filename);
// Check if it exists // Check if it exists
FILE *handle = fopen(ret, "r"); FILE* handle;
if (handle) errno_t error = fopen_s(&handle, ret, "r");
if (handle && !error)
{ {
fclose(handle); fclose(handle);
delete[] modpaths_temp; delete[] modpaths_temp;
@ -197,20 +190,19 @@ namespace DX
if (!success) if (!success)
return false; return false;
// Come on Microsoft... why can't anything you make actually be good. DWORD newProtect;
// NOTE: This memcpy invocation was crashing the linker... memcpy(address, payload, payloadSize);
//memcpy(address, payload, payloadSize); success = VirtualProtect(address, payloadSize, oldProtect, &newProtect);
return success;
unsigned char* destination = reinterpret_cast<unsigned char*>(address);
unsigned char* sourceData = reinterpret_cast<unsigned char*>(payload);
for (unsigned int iteration = 0; iteration < payloadSize; ++iteration)
destination[iteration] = sourceData[iteration];
return true;
} }
bool memPatch(unsigned int address, void* payload, unsigned int payloadSize) bool memPatch(unsigned int address, void* payload, unsigned int payloadSize)
{ {
return memPatch(reinterpret_cast<void*>(address), payload, payloadSize); return memPatch(reinterpret_cast<void*>(address), payload, payloadSize);
} }
bool memPatch(unsigned int address, unsigned char* data, unsigned int size)
{
return memPatch(reinterpret_cast<void*>(address), reinterpret_cast<void*>(data), size);
}
} }