Quote: "edit memory in other applications"
impossible unless the memory is filemapped
if you could edit memory in other apps then that would pose as a major security flaw because a virus could just edit the memory in every app and cause everything to crash
but however if your looking to share memory between apps and you are making both apps then you could use filemapping to make shared memory
I have developed a plugin just for that purpose
(no .ini yet)
plugin is attached
the commands are:
ptr_to_memory=Create Shared Memory(name_of_memory,access_type,size,number)
this creates memory for another proccess to open
ptr_to_memory: This is the pointer to the new memory, if 0 then error
name_of_memory: This should be a unique name for the name, in the other application it needs to open the memory using this name
access_type:should be 1 if you want no access to it, 2 if you want it readonly, 4 if you want both read and write, 8 if you want to only be able to write(i think)
size:the size of the memory to create
number:should be from 0-32
ptr_to_memory=Open Shared Memory(name_of_memory,access_type,number)
this opens shared memory created by another proccess
ptr_to_memory:the pointer to the newly opened memory
name_of_memory:The name of the memory, should be the same as the name of the created memory
access_type:see above
number:should be from 0-32
error_or_not=Close Shared Memory(number,ptr_to_memory)
this closes opened/created shared memory
error_or_not:0 if error
number:The numebr of the memory
ptr_to_memory:the pointer to the memory
Write String ptr,string
this writes a string at the location of ptr
ptr:where to write the string
string:the string to write to memory
I also have a read string but it don't work
btw this is the source code incase your a C programmer and want to have it communicate or whatever
//this is condensed code
#include <windows.h>
#include "globstruct.h"
DWORD dbpstring(DWORD mem,DWORD memSize)
{
LPSTR pret=NULL;
g_pGlob->CreateDeleteString ( (DWORD*)&pret, memSize+1 );
if (pret)
{
// strncpy(pret, (LPSTR) mem,min(strlen(memSize),memSize));
}
return (DWORD) pret;
}
#define PAGE_FILE (void *)0xFFFFFFFF
/*
#define FILE_MAP_ALL_ACCESS 0xf001f
#define FILE_MAP_READ 4
#define FILE_MAP_WRITE 2
#define FILE_MAP_COPY 1
*/
void *filemaps[32];
//access should be 1 if you want no access to it, 2 if you want it readonly, 4 if you want
//both read and write, 8 if you want to be able to write(i think)
//returns a pointer to the shared memory
DWORD CreateSharedMemory(LPSTR name,DWORD access,DWORD size,unsigned char num){ //caution num over 32 or under 1 can crash
unsigned char *rety;void * tmp;
num--;
filemaps[num]=CreateFileMapping(PAGE_FILE,NULL,access,0,size,name);
//if (fv_access==0){fv_access=FILE_MAP_ALL_ACCESS;} //just set it to 0 for all access
rety=(unsigned char*)MapViewOfFile(filemaps[num],FILE_MAP_ALL_ACCESS,0,0,0);
return (DWORD)rety;
}
//returns a pointer to the shared memory
DWORD OpenSharedMemory(LPSTR name,DWORD access,unsigned char num){
unsigned char *rety;
num--;
filemaps[num]=OpenFileMapping(access,0,name);
//if (fv_access==0){fv_access=FILE_MAP_ALL_ACCESS;} //just set it to 0 for all access
rety=(unsigned char*)MapViewOfFile(filemaps[num],FILE_MAP_ALL_ACCESS,0,0,0);
return (DWORD)rety;
}
void CloseSharedMemory(unsigned char num,void *base){
num--;
CloseHandle(filemaps[num]);
UnmapViewOfFile(base);
}
DWORD ReadString(DWORD ptr){ //reads a string from ptr till a null
MessageBox(NULL,(char *)ptr,"debug 1",0);
// return (DWORD)dbpstring((void*)ptr,strlen((void*)ptr)+1); //well that was easy
}
void WriteString(DWORD ptr,LPSTR str){
strcpy((LPSTR)ptr,str);
}
Your signature has not been erased by a mod but rather all bits set to 0