함수 첫번째 인자로 들어가는 매개변수 중에


POKEDATA라는 인자값이 있던데


얘가 하는일이 자식프로세스의 메모리 공간에 데이터를 복사해 넣는거잖아


근데 부모프로세스는 그 자식프로세스의 메모리 공간을 어떻게 파악하고 데이터를 보낸다는거냐



int addr; 


main(int argc, char *argv[]) 

int i, pid; 

sscanf(argv[1], "%x", &addr ); 

printf("Used data address: %x\n", addr); 


if((pid = fork()) == 0 ) 

printf("child process worked\n"); 

ptrace(PTRACE_TRACEME, 0, 0, 0 ); 

execl("mytraced", "mytraced", 0); // 실행시키면서 추적상태로 들어감. 


wait((int*) 0); 

for(i=0; i<32; i++) 

printf("it works step in parent process %d\n", i); 

if(ptrace(PTRACE_POKEDATA, pid, addr, i) == -1 ) 

exit(); 


addr += sizeof(int); 


ptrace(PTRACE_SYSCALL, pid, 1, 0); //traced 실행재게. 


여기 이 소스를 보면


그냥 자식프로세스를 생성한다음


자식프로세스는 블록되어 있고, 부모가 시그널을 받으면 자식의 메모리에 데이터를 넣는방식인거같은데


자식 메모리 주소를 어떻게 알고 넣는거야?


저거 그대로 타이핑해서 실행해봤더니 아니나 다를까 안됨..ㅠㅠ


ptrace함수는 뭐 정보도 거의 없고 잘 모르겠네;;