3

리버스 엔지니어링에서 내 응용 프로그램을 보호하고 싶습니다.응용 프로그램 리버스 엔지니어링 보호/강화

내가하고 싶은 것은 16 진수 편집기, 리소스 편집기 및 어셈블리 해제 조작과 같은 임의 조작으로부터 실행 파일을 보호하기 위해서입니다.

제 아이디어는 응용 프로그램이 서비스 서버 (아마도 XML 파일이나 플랫 파일)의 버전 파일에서 가져온 값에 대해 자체 해시 값을 확인한 다음 응용 프로그램을 종료하거나 기능을 완전히 비활성화하는 것입니다. 값이 일치하지 않습니다.

저는 이상한 물 속에 있습니다. 누군가 의견, 제안, 아이디어 또는 코드 예제를 가지고 있다면, 고맙겠습니다.

개발 언어는 C++이지만 모든 언어로 된 예제를 기꺼이 받아들입니다.

미리 도움을 청하십시오.

+0

에 대한 불가지론 언어입니다

편집) 앞에서 언급 한 바와 같이 사전 공유 키/암호 또는 상업적 인기 동글 솔루션은 가장 일반적인 그리고 누구로부터? –

답변

4

나는 그렇게 쉽지 않을까 걱정됩니다.

누군가가 실행 파일을 수정할 수있는 능력이 있다면, 알려진 해시에 대해 응용 프로그램이 수행하는 모든 검사를 제거 할 수 있습니다.

알려진 실행 파일의 해시를 키로 사용하여 응용 프로그램의 데이터를 암호화하는 등 더 복잡한 작업을 수행 할 수 있지만이를 우회하기는 약간 어렵습니다. 매우 비싼 소프트웨어의 모든 종류의


제작자는 수십 년 동안이에 대한 해결책을 마련하기 위해 노력 해왔다 - 그리고 그들의 노력은 항상 훨씬 적은 자원으로 사람들이 주변에 근무하고있다.

1

짧은 대답은 할 수 없습니다. 더 어렵게 만들 수 있지만 궁극적으로 코드는 프로세서에서 실행되어야하므로 지침을 즉시 읽고, 수정하거나 무시할 수 있습니다.

하드웨어를 제어 할 수 있다면 더 어렵게 만들 수 있지만 궁극적으로 사람들이 충분히 결정되면 자신이하는 일을 깨뜨릴 수 있습니다.

사람들의 정직성에 호소하면, 그것은 당신에게 더 쉽고 아마도 효과가있을 것입니다.

0

실제로 소프트웨어가 변조되는 것을 방지하는 유일한 해결책은 실행 파일을 암호화하고 현재 실행중인 부분 만 해독하는 것입니다. 그리고 해독이 "신뢰할 수있는 장치"(예 : "신뢰할 수있는 장치")에서 수행되어야합니다. USB 동글.

사용할 수있는 제품이 있습니다. 내 고용주의 제품.

모든 소프트웨어 전용 보호 체계는 어느 정도 쉽게 부정 행위를 범할 수 있습니다.

+0

이것은 실제로 그것을 보호하지 않습니다. 이러한 보호 체계는 암호가 해독 될 때 단순히 코드를 찾아내는 것으로 해독 된 버전을 재구성하여 해독되었습니다. 코드의 일부가 동글 자체에서 실행되는 경우 다른 상황이 발생합니다. 엄지의 법칙 : 내 CPU에서 실행되는 경우이를 훔칠 수 있습니다. –

+0

@CyberShadow : 일반적으로 당신이 맞다고 말하지만, 경제적으로 합리적으로하기가 너무 어렵습니다. 이미 언급 한 대책과 하나가 있습니다. 절대로 전체 바이너리를 한 번에 해독하지 마십시오. 실행 파일의 다른 부분에 둘 이상의 키를 사용하십시오. 알려진 디버거와 싸웁시다. ... –

0

리버스 엔지니어링을 시도하는 사람을 좌절시킬 수 있도록 코드를 흐리게 처리하거나 다른 사람이 조작하려고 시도하면 코드 자체가 스스로 파괴되도록 시도하십시오!

1

가장 일반적인 방법은 패커를 사용하는 것입니다. 이것은 많은 상업용 소프트웨어뿐만 아니라 많은 멀웨어에서 수행됩니다. 이 후 편집 작업을 수행하려면 upx과 같은 표준 패커가 있지만 리버스 엔지니어가이 문제를 쉽게 해결합니다.

패커는 최선의 노력으로 난독 화되고 압축 기능을 통해 바이너리 크기를 줄이기 위해 상용 소프트웨어에서 사용됩니다. 그것들은 (대부분) 원시적 인 악성 코드에 의해서도 사용되었습니다. 많은 AV가 조심스럽게 여기는 것은 패커와 자기 수정/난독 화 코드의 존재를 인식하기 위해 바이너리를 맬웨어로 표시합니다.

악성 코드/바이러스 방지 디버깅 및 패커/암호 작성기의 최신 기술과 최신 정보를 읽으십시오. 여기에는 몇 가지 Phrack 잡지 기사 및 바이러스/악성 프로그램 연구 사이트 및 포럼 리소스가 있습니다. 을 기억하면 스피드 범프에 불과합니다. 그러나 사용자가 필요 -

유일한 올바른/undefeatable (비시킬 거라고)이 작업을 수행하는 방법은 런타임에 키를 해독 한 후 AES와 같은 강력한 알고리즘 코드를 암호화하고하는 것입니다 그것을 실행하기위한 키. 대부분의 후 컴파일 포장기 및 크립 당신이 무엇을 보호하는 대부분의