2013-03-08 2 views
-1

열 때마다 자동으로 자신의 MD5 해시를 변경할 수있는 간단한 프로그램? 프로그램 용 md5 해시를 검사하는 'WinMD5'와 같은 프로그램이 있습니다. 내 질문은 우리가 프로그램을 열 때마다 그것을 바꿀 수 있는지입니다. 몇 가지 간단한 것을 추가하거나 삭제하면됩니다. 우리는 다시 공동 작업을하고 프로그램을 쌓아서 새로운 md5 해시를 얻습니다. 하지만 몇 줄만 입력하면 프로그램이 자동으로 변경됩니다. 그것은 위대 할 것이다! 변경하려면 어떻게해야합니까?매 시작마다 변경 사항을 md5 해시로 프로그램을 만들 수 있습니까?

+0

단일 바이트를 변경 한 경우 .exe의 내용은 파괴 할 수있는 한 변경할 수 없습니다. 게다가, 왜 그걸 할거야? –

+0

그런 경우 바이러스 스캐너가 매우 불안해집니다. –

답변

1

할 수는 있지만 간단하지는 않습니다. 프로그램의 실행 파일을 열고, 파일의 내부 구조를 이해하고 (Portable Executable, PE), 프로그램 실행에 영향을 미치지 않는 내용을 변경해야합니다. ELF 바이너리 형식 (Linux에서 사용됨)은 모든 종류의 주석과 기호 및 프로그램의 실행에 직접적인 영향을 미치지 않는 추가 필드를 지원합니다. PE 파일에서도 사용할 수 있습니다. 또한이 변수의 초기 값은 프로그램의 데이터 세그먼트에있는 실행 파일에 저장되므로이 목적을 위해 프로그램에서 작성한 정적 전역 변수를 사용할 수도 있습니다.

MD5 해시 값을 완전히 변경하기 만하면됩니다 (MD5는 그렇게 설계되었습니다). 따라서 프로그램이 실행될 때마다 .exe 파일의 일부 4 바이트 카운터를 증가시키는 것으로 충분할 것입니다 (해시를 반복하려면 2³² 실행을 필요로합니다). 8 바이트를 사용하여 인류의 존속 기간을 반복하는 것을 불가능하게 만듭니다.

내가 말했듯이, 그것은 사소한 것이 아니라 일부 사람들이 생각하기에 어렵거나 불가능한 것도 아닙니다. 프로그램을 실행하는 사용자는 바이너리 실행 파일을 수정할 수있는 권한이 있어야합니다 (Windows에서 관리자 권한을 요청할 것인가? 모르겠다. Windows 사용자가 아님).

행운을 빈다.

+0

Windows는 사전에 적극적으로 권한을 요청하지 않으며 수정 구슬이 없습니다. 그리고 프로세스가 시작되면 관리자 권한을 얻을 수 없습니다. "관리자 권한으로 실행"은 프로세스 기간 동안 관리자 권한을 얻는다는 의미입니다. – MSalters

+0

@MSalters Unix와 다르지 않습니다. Windows에는 실행 파일의 전체 경로를 찾는 표준 함수가 있습니다. 유닉스는 그렇지 않다. (그러나 IIRC, 리눅스에서는'/ proc/'아래에있는 파일 중 하나에서 찾을 수있다). –

+0

@JamesKanze Fuction은 리눅스의'/ proc/'보다 더 이상 표준이 아닙니다. 왜냐하면 그것들은 모두 플랫폼 특정 솔루션이기 때문입니다. – lvella

0

파일을 열거 나 실행해도 내용에 영향을주지 않습니다. Windows에서는 (Unix에서는 지원되지 않음) 실행 파일의 전체 이름 을 얻을 수 있습니다. 중요하지 않은 바이트 인 이있는 위치를 알고있는 경우 파일을 열고 수정할 수 있습니다. 합니다 (COFF 형식은 예를 들어, 네 개의 바이트 타임 스탬프, 당신은 거의 아무것도 설정할 수 있습니다. 또는 프로그램을 구축 할 때 에게 쓸모없는 다수의 심볼을 만들 수 있고, 가 자신의 이름을 수정 있습니다.)

물론 이것은 사용자가 보호 된 실행 파일을 쓰지 않았다고 가정합니다. 그러나 개발 환경을 제외하고는 거의 인 경우를 가정합니다.

+0

실행 파일의 일반적인 문제는 root/sysadmin (o-w 비트/ACL)이 아니고 많은 쓰기 방지 (u-w/+ R 비트)가 아닙니다. – MSalters

+0

필자는 쓰기 권한이 없으면 파일 쓰기 보호를 고려합니다. 일반 사용자로서 설치되어있는 파일에 대해서도 필자는 실행 파일을 보호합니다. 그 문제는 도구 개발을 위해서조차도 개발 디렉토리에서 그들을 복사하는 스크립트와'$ PATH' 쓰기로 찾을 수있는 스크립트로 그들을 보호합니다. 물론 소유자 나 루트 권한으로 보호 기능을 변경하고 파일을 수정 한 다음 재설정 할 수 있습니다. –

관련 문제