본문 바로가기

학부_대학원/대학원_학과공부정리

[*nix] 자가 삭제(unlink), 프로세스 이름 변경(prctl)

SMALL

Linux Anti Reversing 

말이 안티 리버싱이지 찾기 힘들게 하는 기법.


파일자가 삭제


#include "stdio.h"


int main(int argc, char* argv[])

{

unlink(argv[0]);

}


link : 쉽게 말하면 Hard link이다. 파일을 inode 블록을 가리키게 한다.




프로세스 이름 변경 

NAME

       prctl - operations on a process


SYNOPSIS

       #include <sys/prctl.h>


       int prctl(int option, unsigned long arg2, unsigned long arg3,

                 unsigned long arg4, unsigned long arg5);


PR_SET_NAME (since Linux 2.6.9)

              Set the name of the calling thread, using the value in the location pointed to by (char *) arg2.  The name can be up to 16 bytes 

   long, and should be null-terminated if it contains fewer bytes.  This is the same attribute that can be set via thread_setname_np(3) 

   and retrieved  using  pthread_get‐name_np(3).  The attribute is likewise accessible via /proc/self/task/[tid]/comm, where tid is the 

  name of the calling thread.


prctl(PR_SET_NAME, "change_name\0",NULL,NULL,NULL);


위와 같은 방법이 있다.


하지만 난 적용되지 않았다.


그래서 ....


  //change process name

if(strcmp(argv[0], modified_name)) { // 첫 프로세스 확인

   argv[0] = modified_name;

   execv("/proc/self/exe", argv);

   fputs("exec failed", stderr); 

   return 1;

}

간단한 코드로도 변경 가능.





LIST

'학부_대학원 > 대학원_학과공부정리' 카테고리의 다른 글

리눅스 커널 이미지 구조  (0) 2017.08.22
VFS - Virtual File System[1]  (0) 2017.05.06
리눅스 커널 디렉토리 구조  (0) 2017.04.13
Linux Kernel Build  (0) 2017.03.23
Memo  (0) 2017.03.20