From 0996dc4e7c55a750e4e346b0c74cb3a96d39f66b Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Tue, 5 Jul 2022 17:25:47 +0000 Subject: [PATCH] Write values directly to a memory address. Co-authored-by: sigonasr2 --- C/scripts/build.sh | 2 +- main.c | 48 +++++++++++++++++++++++++++++++++++--------- memovr | Bin 16728 -> 17096 bytes sig | 2 +- testProgram | Bin 0 -> 16880 bytes testProgram. | 20 ++++++++++++++++++ testProgram2 | Bin 0 -> 17208 bytes testProgram2. | 49 +++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 109 insertions(+), 12 deletions(-) create mode 100755 testProgram create mode 100644 testProgram. create mode 100755 testProgram2 create mode 100644 testProgram2. diff --git a/C/scripts/build.sh b/C/scripts/build.sh index 3cbcb64..32406ee 100755 --- a/C/scripts/build.sh +++ b/C/scripts/build.sh @@ -2,6 +2,6 @@ #C printf "Running program...\n\n\n" if gcc $(find . -type f -name "*.c") ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then - ./${PROJECT_NAME} "$@" + sudo ./${PROJECT_NAME} "$@" fi printf "\n\n" diff --git a/main.c b/main.c index 6c0ebc4..f56c003 100644 --- a/main.c +++ b/main.c @@ -1,17 +1,21 @@ #include -#include +#include +#include +#include +#include +#include -unsigned long strToLong(char*str) { +unsigned long long strToLong(char*str) { int counter=0; char c; unsigned long val=0; int base=10; while ((c=str[counter++])!='\0') { - if (counter==1&&c=='0') { + if (c=='0'&&val==0&&base==10) { base=8; continue; } else - if (counter==2&&c=='x') { + if (c=='x'&&val==0&&base==8) { base=16; continue; } @@ -29,8 +33,8 @@ unsigned long strToLong(char*str) { } int main(int argc,char**argv) { - unsigned int pid; - unsigned long addr; + long unsigned int pid; + unsigned long long addr; unsigned long val; unsigned int interval=1000; if (argc<4) { @@ -43,9 +47,33 @@ int main(int argc,char**argv) { if (argc>=5) { interval=strToLong(argv[4]); } - printf("\nPID: %lu",pid); - printf("\nAddress: %lu",addr); - printf("\nValue: %lu",val); - printf("\nInterval: %lu",interval); + printf("\nPID: %lu",pid); + printf("\nAddress: 0x%08llx",addr); + printf("\nValue: %lu",val); + printf("\nInterval: %d",interval); + + char*proc_mem = malloc(50); + sprintf(proc_mem,"/proc/%ld/mem",pid); + int fd_proc_mem=open(proc_mem,O_RDWR); + if (fd_proc_mem==-1) { + printf("Could not open %s\n",proc_mem); + exit(1); + } + char*buf=malloc(sizeof(unsigned int)); + lseek(fd_proc_mem,addr,SEEK_SET); + read(fd_proc_mem,buf,sizeof(unsigned int)); + while (1) { + sprintf(buf,"%d",(int)val++); + lseek(fd_proc_mem,addr,SEEK_SET); + if (write(fd_proc_mem,buf,sizeof(unsigned int))==-1) { + printf("Error while writing\n"); + exit(1); + } + printf("\nWrite %d",(int)val-1); + sleep(2); + } + + free(buf); + free(proc_mem); } } \ No newline at end of file diff --git a/memovr b/memovr index be4871c8ce5d744760ab0b4ff1709481e65bd2b9..26c82ae3237c35a8476e359cde4afa7892ef34ec 100755 GIT binary patch literal 17096 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 Rs#3$=GFe(gVOz!GzX5F!M2!Fd diff --git a/sig b/sig index 06a67d8..9278450 100755 --- a/sig +++ b/sig @@ -1,4 +1,4 @@ -export AUTO_UPDATE=true +export AUTO_UPDATE=false source utils/define.sh diff --git a/testProgram b/testProgram new file mode 100755 index 0000000000000000000000000000000000000000..41ff809d56010e133043414c469cbad92a1b2ae1 GIT binary patch literal 16880 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 +#include +#include + +int main() { + + char foo[] = "This is some text from proc-1"; + + printf("Now execute\n"); + printf(" sudo ./testProgram2 %d %lx %lu\n", getpid(), (long unsigned int) foo, strlen(foo)+1); + + printf("Press any key\n"); +while (1) { + getchar(); + + printf("foo has changed to: %s\n", foo); +} + +} diff --git a/testProgram2 b/testProgram2 new file mode 100755 index 0000000000000000000000000000000000000000..5e3f4ae155e704b0d935986a9900e1f38b7f4536 GIT binary patch literal 17208 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 NZM8I3y9`_``zQH4hK2wD literal 0 HcmV?d00001 diff --git a/testProgram2. b/testProgram2. new file mode 100644 index 0000000..9923e47 --- /dev/null +++ b/testProgram2. @@ -0,0 +1,49 @@ +#include +#include +// #include +#include +#include +#include +#include + +int main(int argc, char* argv[]) { + + if (argc != 4) { + printf("proc-2 pid addr length\n"); + exit(1); + } + + int pid = strtol (argv[1], NULL, 10); + unsigned long addr = strtoul(argv[2], NULL, 16); + int len = strtol (argv[3], NULL, 10); + + char* proc_mem = malloc(50); + sprintf(proc_mem, "/proc/%d/mem", pid); + + printf("opening %s, address is %ld\n", proc_mem, addr); + int fd_proc_mem = open(proc_mem, O_RDWR); + if (fd_proc_mem == -1) { + printf("Could not open %s\n", proc_mem); + exit(1); + } + + char* buf = malloc(len); + + lseek(fd_proc_mem, addr, SEEK_SET); + read (fd_proc_mem, buf , len ); + + printf("String at %ld in process %d is:\n", addr, pid); + printf(" %s\n", buf); + + printf("\nNow, this string is modified\n"); + strncpy(buf, "Hello from proc-2", len); + + lseek(fd_proc_mem, addr, SEEK_SET); + if (write (fd_proc_mem, buf , len ) == -1) { + printf("Error while writing\n"); + exit(1); + } + + free(buf); + free(proc_mem); +}