열 때마다 자동으로 자신의 MD5 해시를 변경할 수있는 간단한 프로그램? 프로그램 용 md5 해시를 검사하는 'WinMD5'와 같은 프로그램이 있습니다. 내 질문은 우리가 프로그램을 열 때마다 그것을 바꿀 수 있는지입니다. 몇 가지 간단한 것을 추가하거나 삭제하면됩니다. 우리는 다시 공동 작업을하고 프로그램을 쌓아서 새로운 md5 해시를 얻습니다. 하지만 몇 줄만 입력하면 프로그램이 자동으로 변경됩니다. 그것은 위대 할 것이다! 변경하려면 어떻게해야합니까?매 시작마다 변경 사항을 md5 해시로 프로그램을 만들 수 있습니까?
답변
할 수는 있지만 간단하지는 않습니다. 프로그램의 실행 파일을 열고, 파일의 내부 구조를 이해하고 (Portable Executable, PE), 프로그램 실행에 영향을 미치지 않는 내용을 변경해야합니다. ELF 바이너리 형식 (Linux에서 사용됨)은 모든 종류의 주석과 기호 및 프로그램의 실행에 직접적인 영향을 미치지 않는 추가 필드를 지원합니다. PE 파일에서도 사용할 수 있습니다. 또한이 변수의 초기 값은 프로그램의 데이터 세그먼트에있는 실행 파일에 저장되므로이 목적을 위해 프로그램에서 작성한 정적 전역 변수를 사용할 수도 있습니다.
MD5 해시 값을 완전히 변경하기 만하면됩니다 (MD5는 그렇게 설계되었습니다). 따라서 프로그램이 실행될 때마다 .exe 파일의 일부 4 바이트 카운터를 증가시키는 것으로 충분할 것입니다 (해시를 반복하려면 2³² 실행을 필요로합니다). 8 바이트를 사용하여 인류의 존속 기간을 반복하는 것을 불가능하게 만듭니다.
내가 말했듯이, 그것은 사소한 것이 아니라 일부 사람들이 생각하기에 어렵거나 불가능한 것도 아닙니다. 프로그램을 실행하는 사용자는 바이너리 실행 파일을 수정할 수있는 권한이 있어야합니다 (Windows에서 관리자 권한을 요청할 것인가? 모르겠다. Windows 사용자가 아님).
행운을 빈다.
Windows는 사전에 적극적으로 권한을 요청하지 않으며 수정 구슬이 없습니다. 그리고 프로세스가 시작되면 관리자 권한을 얻을 수 없습니다. "관리자 권한으로 실행"은 프로세스 기간 동안 관리자 권한을 얻는다는 의미입니다. – MSalters
@MSalters Unix와 다르지 않습니다. Windows에는 실행 파일의 전체 경로를 찾는 표준 함수가 있습니다. 유닉스는 그렇지 않다. (그러나 IIRC, 리눅스에서는'/ proc/
@JamesKanze Fuction은 리눅스의'/ proc/
파일을 열거 나 실행해도 내용에 영향을주지 않습니다. Windows에서는 (Unix에서는 지원되지 않음) 실행 파일의 전체 이름 을 얻을 수 있습니다. 중요하지 않은 바이트 인 이있는 위치를 알고있는 경우 파일을 열고 수정할 수 있습니다. 합니다 (COFF 형식은 예를 들어, 네 개의 바이트 타임 스탬프, 당신은 거의 아무것도 설정할 수 있습니다. 또는 프로그램을 구축 할 때 에게 쓸모없는 다수의 심볼을 만들 수 있고, 가 자신의 이름을 수정 있습니다.)
물론 이것은 사용자가 보호 된 실행 파일을 쓰지 않았다고 가정합니다. 그러나 개발 환경을 제외하고는 거의 인 경우를 가정합니다.
실행 파일의 일반적인 문제는 root/sysadmin (o-w 비트/ACL)이 아니고 많은 쓰기 방지 (u-w/+ R 비트)가 아닙니다. – MSalters
필자는 쓰기 권한이 없으면 파일 쓰기 보호를 고려합니다. 일반 사용자로서 설치되어있는 파일에 대해서도 필자는 실행 파일을 보호합니다. 그 문제는 도구 개발을 위해서조차도 개발 디렉토리에서 그들을 복사하는 스크립트와'$ PATH' 쓰기로 찾을 수있는 스크립트로 그들을 보호합니다. 물론 소유자 나 루트 권한으로 보호 기능을 변경하고 파일을 수정 한 다음 재설정 할 수 있습니다. –
- 1. 주어진 크기와 MD5 해시로 파일을 만들 수 있습니까?
- 2. 파일 이름을 md5 해시로 변환
- 3. 변경 사항을 커밋하고 푸시하는 동안 태그를 만들 수 있습니까?
- 4. IOS : 어떻게 indentationLevel에서 변경 사항을 애니메이션으로 만들 수 있습니까?
- 5. Ruby에서 방어 프로그램을 어떻게 만들 수 있습니까?
- 6. 구문과 단어를 MD5 해시로 변환하는 방법은 무엇입니까?
- 7. FILTER_SANITIZE_STRING을 (를) 사용하는 클래스에서 md5 해시로 문자열
- 8. 연락처 변경 사항을 어떻게 확인할 수 있습니까?
- 9. UITextField의 변경 사항을 어떻게 알릴 수 있습니까?
- 10. JVM 외부에서 변경 사항을 볼 수 있습니까?
- 11. 속성 변경 사항을 '볼 수 있습니까'
- 12. registerContentObserver가있는 연락처 변경 사항을 결정할 수 있습니까?
- 13. 실시간으로 변경 사항을 반영하기 위해 매 초마다보기를 새로 고칠 수 있습니까?
- 14. 우리는 매 시간마다 발생하는 for 루프를 어떻게 만들 수 있습니까?
- 15. 매 시간마다 계산하도록 SQL 쿼리를 만들 수 있습니까?
- 16. 데이터 마이그레이션을 통해 SQL Server없이 응용 프로그램을 만들 수 있습니까?
- 17. MD5 해시로 스트림을 업로드하면 "지정한 콘텐츠 -MD5가 유효하지 않습니다."
- 18. 어떻게 데몬 응용 프로그램을 만들 수 있습니까?
- 19. 어디서 Windows 응용 프로그램을 만들 수 있습니까?
- 20. 프레임 워크없이 응용 프로그램을 만들 수 있습니까?
- 21. PHP로 IPHONE 응용 프로그램을 만들 수 있습니까?
- 22. iOS에서 투명한 응용 프로그램을 만들 수 있습니까
- 23. 당신은 어떻게 텔레비전 프로그램을 만들 수 있습니까?
- 24. 테마없이 간단한 응용 프로그램을 만들 수 있습니까?
- 25. 응용 프로그램을 드루팔 모듈로 만들 수 있습니까?
- 26. Google 크롬 설치 프로그램을 만들 수 있습니까?
- 27. 어떻게 Angular2 응용 프로그램을 만들 수 있습니까?
- 28. 어떻게 프로젝트에서 설치 프로그램을 만들 수 있습니까?
- 29. MySQL : 암호화되지 않은 암호 열을 MD5 해시로 변환
- 30. md5 해시 값 변경
단일 바이트를 변경 한 경우 .exe의 내용은 파괴 할 수있는 한 변경할 수 없습니다. 게다가, 왜 그걸 할거야? –
그런 경우 바이러스 스캐너가 매우 불안해집니다. –