2012-09-12 4 views
2

이 주제에 대한 여러 기사를 this one으로 읽고 대부분의 기술을 구현했습니다. 하지만 바이너리에 추가로 참조되지 않거나 전혀 사용되지 않는 코드를 추가하려고합니다. 이상적으로이 코드를 도구를 통해 빌드 된 바이너리에 추가 할 수 있기를 원합니다. 그런 도구가 있습니까? 그런 도구를 만드는 방법에 대한 아이디어가 있습니까? 또는 생성하고 C++ 프로그램에 사용하지 않는 코드를 추가하는 방법은 무엇입니까? 어디로 넣어야합니까?리버스 엔지니어링 방지 C++ 바이너리

Skype 내부 분석을 통해 나는 코드를 최대한 엉망으로 읽었다 고 읽었습니다. 이를 달성하는 한 가지 방법은 각 호출을 동적으로 계산하는 것입니다.

if (sin(a) == 42) { 
    do_dummy_stuff() ; 
} 

더미 함수를 입력해야합니까? 아니면 더미 함수가 사용되지 않는 코드입니까?

업데이트 : 이진에 결코 사용하지 않는 코드를 추가하려는 이유는 많은 전자 책을 제공하기 때문입니다. 나는 각각의 바이너리가 약간 다르므로 하나가 손상되면 다른 것들은 존재하지 않기를 바란다.

+0

관심이 있다면 실제로 프로그램에서 어떤 코드가 호출되는지 알아내는 것이 어려울 것이라고 상상하지는 않습니다. 또한, 컴파일러는 이것을 최적화하지 말라는 지시를받을 필요가있을 것입니다. –

+2

영리한 컴파일러는 '죄'가 결코 42만큼 커지지 않으며 전체 p.o.c. –

+0

@Anthony Burleigh : 제발, 업데이트 –

답변

4

내가 맞는다면, 당신은 obfuscation입니다.

This question on the Topic C++ 코드를 모호하게 만드는 많은 소프트웨어가 있습니다. 빠른 검색 기능은 많은 앱을 보여줍니다. this 또는 this입니다.

+0

난독 화는 이야기의 한 부분입니다. 바이너리에 절대 사용하지 않는 코드를 추가하고 싶습니다. –

+0

사실 우리는 소스 코드를 제공하지 않기 때문에 난독 처리가 우리에게 도움이 될 것이라고 생각하지 않습니다. –

3

이러한 도구가 있습니까?

예, 있습니다. 적절한 매개 변수를 가진 컴파일러라고하며 링커에 추가합니다. 이 조합에 strip을 추가하면 적절한 라이브러리를 얻을 수 있습니다.

진지한 점은 there are no ways to prevent reverse engineering입니다. 당신은 단지 크래커를 더 열심히 (또는 더 성가 시게) 만들 수 있습니다. this article (스파이웨어 개발자가 모든 종류의 불법 복제 방지를 시도한 곳)를 살펴볼 수 있습니다.

+0

를 참조해라. 나는 그것을하려고 노력하고있다. 코드를 리버스 엔지니어링하는 것을 더 어렵게 만든다. –