/proc/cpuinfo
않겠습니까? 그래도 디코더 블랍에 도움이 될지 확실하지 않습니다.
/proc/cpuinfo
않겠습니까? 그래도 디코더 블랍에 도움이 될지 확실하지 않습니다.
답변:
이 포럼 스레드 에서 이것을 복사하고 있습니다 .
Dom은 모든 소스 코드, Videocore 디버거 및 많은 폐쇄 형 VC 관련 도구에 액세스 할 수 있습니다. 일련 번호를 변경할 수있는 정보를 공개하면 코덱 라이센싱 메커니즘이 중단되므로 결코 발생하지 않습니다.
또한 스레드에 게시되어 있습니다. 일련 번호를 변경하는 유일한 이유는 다른 사람의 MP4 라이센스를 복사하여 사용하는 것입니다. 이것이 라이센싱과 관련된 보안입니다. 고유 한 일련 번호는 MP4 라이센스에 연결되어 있으므로 누군가 라이센스 키를 얻었더라도 Raspberry Pi의 일련 번호를 변경할 수없는 경우 라이센스 키로 아무 작업도 수행 할 수 없습니다.
업데이트 : 실제 질문에 대답합니다. Dom에 실제 저수준 펌웨어의 소스가 있다고 말하고 싶습니다. 그는 실제로 직렬을 읽는 소스 코드를 변경하고 다른 값을 반환하도록 강요한다고 생각합니다. 솔직히 다른 시리얼을 반환하기 위해 일부 펌웨어 코드를 변경 한 것처럼 실제로 CPU가 변경되었음을 의심합니다. 또한 질문에 대한 사과 대신, 우리 모두는 단지 당신에게 질문에 대답하는 대신 "왜? 내 잘못이야.
사용자 공간 프로그램에 관한 한, 거의 모든 파일을 속이고 내용을 위조하는 것은 매우 쉽습니다. 예를 들어, C 프로그램이 /proc/cpuinfo
파일을 사용하여 일련 번호를 확인 한다고 가정하십시오 . 이 프로그램은 복사 방지되어 있으며 직렬에 연결되어 있으며 소스 코드가 없습니다. 그러나 여전히 실행할 수 있으며 strace program 2>&1 | grep cpuinfo
다음과 같이 나타납니다.
open("/proc/cpuinfo", O_RDONLY) = 3
이 시점에서 작은 라이브러리를 만들 수 있습니다. cpuinfo.so
에서 다음 함수를 .
int open(const char *file, int flags) {
static int (*real_open)(const char *file, int flags);
if(!real_open) real_open = dlsym(RTLD_NEXT, "open");
if(!strcmp(file, "/proc/cpuinfo")) file = "/tmp/cpuinfo";
return real_open(file, flags);
}
보시다시피, 라이브러리 사용자가 열려고하는지 확인하고 있습니다 . /proc/cpuinfo
이 경우 /tmp/cpuinfo
대신 열립니다 .
그런 다음 원본 복사 방지 프로그램을로 실행 하고 나머지 파일과 올바르게 작업하면서 LD_PRELOAD=/path/to/cpuinfo.so program
가짜 파일을 행복하게 읽습니다 /proc/cpuinfo
.
복사 방지 된 소프트웨어에 커널 개체가 포함되어 있으면 하드웨어에 직접 액세스 할 수 있으므로 속이기가 훨씬 더 어려워집니다. 그러나 이러한 소프트웨어는 빌드 된 커널에서만 작동하므로 배포하기가 비실용적입니다.