#include #include #include #include #define BUFSZ 8192 int main( int argc, char** argv ) { if ( argc < 3 ) { fputs("usage: memwrite \n",stderr); return 1; } char fn[256]; snprintf(fn,256,"/proc/%s/mem",argv[1]); int fd = open(fn,O_WRONLY); if ( !fd ) { perror("could not open process"); return 2; } off_t memofs = 0; off_t siz = 0, srd; sscanf(argv[2],"%llx",&memofs); sscanf(argv[3],"%lld",&siz); lseek(fd,memofs,SEEK_SET); unsigned char buf[BUFSZ]; while ( siz > 0 ) { srd = read(0,buf,(siz>BUFSZ)?BUFSZ:siz); write(fd,buf,srd); siz -= srd; } close(fd); return 0; }