데이터의 패킹&언패킹 함수 구현과 process함수의 동작방식을 자세하게 구상해보았다.
내가 구현한 패킹&언패킹 함수는 이렇다.
unsigned long long * p64(unsigned long long value){
unsigned long long * tmp = malloc(sizeof(unsigned long long) + 1);
*(tmp) = value;
*(char *)(tmp + sizeof(unsigned long long)) = '\0';
return tmp;
}
unsigned int * p32(unsigned int value){
unsigned int * tmp = malloc(sizeof(unsigned int) + 1);
*(tmp) = value;
*(char *)(tmp + sizeof(unsigned int)) = '\0';
return tmp;
}
Process함수의 동작방식은
1. pipe함수를 2번 사용하여 읽기&쓰기용 파이프를 만든다
2. fork()를 통해 자식 프로세스를 실행한다.
3. 자식프로세스와 & 부모 프로세스는 자신에게 불필요한 파이프를 닫는다.
4. 자식프로세스에서 execl()함수를 통해 해킹 대상 프로그램을 실행한다.
5. 자식프로세스에서 자신의 표준 입력 & 쓰기를 닫고 1번과정에서 생성한 파이프로 표준 입력&쓰기를 재설정한다.
이정도로 구상하고 있다.