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;
}
간단한 코드로도 변경 가능.
'학부_대학원 > 대학원_학과공부정리' 카테고리의 다른 글
리눅스 커널 이미지 구조 (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 |