2016-08-12 2 views
0
int main(int argc, char **argv) 
{ 
    personality(ADDR_NO_RANDOMIZE); 

    if (fork()) 
    { 
    return 0; 
    } 

    printf("Hook me") 

연습에서이 코드가 발생했습니다. 내 계산에 따르면, 이것은 자식 프로세스에서 ASLR을 비활성화해야합니다. 그러나 LD_PRELOAD를 사용하여 printf에서 바이너리를 잠 그어 그 시점에서 gdb로 연결했습니다. 이 시점에서 스택 주소에 따라 ASLR이 활성화 된 것으로 나타났습니다. Aslr은 부모 프로세스에서 확실히 활성화됩니다.다음 코드는 ASLR을 비활성화합니까?

자식 프로세스에서 ASLR을 비활성화해야합니까? 분기 된 자식에서 ASLR이 사용 중지되는 것을 방지하는 코드의 문제점은 무엇입니까?

답변

1

fork으로 작동하지 않으므로 fork은 부모 (ASLR 사용) 주소 공간의 정확한 사본을 만듭니다. 대신 exec으로 시도하면 제대로 작동합니다.

관련 문제