문제

응용 프로그램을위한 비공식적 인 독립형 플러그인 인 프로그램을 작성했습니다. 이를 통해 고객은 공급 업체 소유의 대안보다 저렴한 대안 인 서비스를받을 수 있습니다. 내 프로그램은 불법이 아니며 어떤 종류의 TOS에 대하여, 분명히 바이러스, 애드웨어 또는 그와 비슷한 것이 아닙니다. 즉, 공급 업체는 물론 경쟁을하는 것에 대해 행복하지 않으며 응용 프로그램이 실행되는 것을 막으려 고 노력하고 있습니다.

그는 이미 사람들이 내 앱과 함께 내 앱을 실행하는 것을 막기 위해 몇 가지 전술을 시도했습니다. 그는 그것을 감지하면 그의 앱이 가짜 오류를 던진다.

먼저, 그는 올바른 타이틀이있는 열린 창을 찾아 내 프로그램이 실행 중인지 확인했습니다. 스타트 업에서 프로그램 타이틀을 무작위로 만들어서 문제를 해결했습니다.

다음으로, 그는 달리기 프로세스 이름을 찾았습니다. 앱이 [random string] .exe로 시작될 때 앱 사본 자체를 만들어서 실행하여 이에 대응했습니다.

어쨌든, 내 질문은 이것입니다. 내 프로그램이 실행되는지 감지하기 위해 무엇을 할 수 있습니까? Window Text (예 : 상태 표시 줄, 레이블)를 읽을 수 있다는 것을 알고 있습니다. 나는 레이블을 이미지로 교체하여 이것을 대응할 준비가되어 있습니다 (Ugh, 다른 방법).

그러나 또 무엇이 있습니까? 프로그램이로드 된 .dlls를 감지 할 수 있습니까? 그렇다면 DLL 이름을로드하기 전에 무작위 화하여 해결할 수 있습니까?

나는 프로그램의 서명을 메모리에서 가져 와서 바이러스 스캐너처럼 추적 할 수 있다는 것을 알고 있지만, 그 일을 할 가능성은 아마도 잘 진행되지 않기 때문에 좋지 않을 것입니다.

비록 이것이 그가하고있는 것에 대해 약간 엉망이지만, 그것은 일종의 재미입니다. 그것은 괴상한 주먹 싸움과 같습니다.

편집하다:내가 플러그인이라고 말했을 때, 그것은 내가 사용한 (잘못된) 용어입니다. 독립형 exe입니다. 내 프로그램과 다른 것 사이의 "API"는 단순히 텍스트 상자 등과 같은 컨트롤에 데이터를 입력하는 것입니다.

도움이 되었습니까?

해결책

나는 이것에 대해 조금 더러운 느낌이 들지만 늦었고 드라이브 사본이 끝날 때까지 기다리고 있습니다 ....

그는 체크섬을 사용하여 실행 파일/DLL을 식별 할 수 있습니다. 이것은 이름을 바꾸는 속임수를 가져옵니다.

시작시 프로그램에서 비트를 무작위로 수정 하여이 문제를 해결할 수 있습니다 (예 : 리소스 변경, 임베디드 버전과 함께 재생 등).

내가 그 사람이라면 네트워크 트래픽 패턴을 찾기 시작했습니다. 예를 들어, 고객을 경쟁 업체로 안내하는 경우 어딘가에서 해당 정보를 찾고 있으므로 플러그인이 블랙리스트에있는 사이트에 액세스하는 경우 프로세스를 죽이거나 라이브러리를 내릴 수 있습니다.

고양이와 마우스 게임을 충분히 멀리 가져 가면 (예 : 쉘 후크가 삭제되면 실행 파일/라이브러리를 재창조 할 수 있습니다) 바이러스 백신 소프트웨어에 의해 바이러스로 플래그가 지정 될 것입니다.

다른 팁

경쟁 업체의 스포츠가 아닙니다.

문제가없는 암호화 소스 코드로 프로젝트를 배포하십시오. 특정 서명 감지를 피하기 위해 무작위 화, 클래스 이름을 바꾸고 코드를 다시 정리할 수있는 암호 해독 및 배포 프로그램을 작성하십시오.

그런 다음 CSHARPCODEPROVIDER를 사용하여 클라이언트 시스템에서 코드를 컴파일하여 코드를 컴파일하십시오. 완전히 임의의 함수 서명으로 임의의 어셈블리를 생성 할 수 있습니다 (나는 완전히 무작위가 아닌 실제, 일반적인 단어의 큰 사전을 사용하는 것이 좋습니다. 더 재미있게 만나기 위해 함께 연결할 수 있습니다. 예를 들어 라이브, 가상, 공간, 사무실, 네트워크, 네트워크, 유틸리티. space.live.network.dll, utility.virtual.live.dll).

모든 클라이언트의 프로그램의 모든 버전은 다릅니다. 배포 프로그램을 망쳐 놓으십시오. 맞춤형 버전을 설치 한 후 자체적으로 삭제해야 할 수도 있습니다.

어쨌든, 내 질문은 이것입니다. 내 프로그램이 실행되는지 감지하기 위해 무엇을 할 수 있습니까?

  • 귀하의 프로그램은 EXE입니까 아니면 DLL입니까?
  • 플러그인이라고 부릅니다.
  • 프로그램은 어떻게 시작/시작/실행됩니까?
  • 귀하의 프로그램은 "플러그인"을 위해 무엇을합니까?
  • 프로그램과 다른 프로그램 사이의 API는 무엇입니까?

이것은 최종 질문에 대한 답이 아니라 설명 된 문제에 대한 답입니다.

다른 응용 프로그램을 수정하는 것은 어떻습니까? 제목에서 찾고있는 문자열을 찾아서 문자를 변경하십시오.

고객이 자신의 것이 아니라 다른 응용 프로그램에 수정하여 문제가 어디에 있는지 고객에게 알리십시오.

@ryeguy ... 최고의 방어는 좋은 공격 IMHO입니다. 당신의 프로세스를 비활성화하기 전에 그의 프로세스를 비활성화하기 위해 할 수있는 일을하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top