C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68507] Re:Re: 콤포넌트 불법복제 방지에 유용하하겠네요
현이 [] 1432 읽음    2012-11-09 21:32
콤포넌트중에 불법복제 막기위해서 빌더에서만 실행되게 하고
아니면 실행이 안되게 하는 상용 콤포넌트들이 이런 방법을 쓰는거였군요
잘쓸께요 감사합니다



빌더(TWx) 님이 쓰신 글 :
: 현이 님이 쓰신 글 :
: : 빌더님이 답변해주신 인디 FTP한글문제 답변 보고서 한방에 문제를 해결한 일인입니다 ^^
: : 답변해주시는 글들 보면 내공이 높은 고수분이란걸 느끼게됩니다
: : 다른게 아니구요 아래 글중에 엠바 IDE에서 실행중인지 알아내는 방법을 샘플코드로
: : 올려주셨는데요 소스코드를 올려 주시면 안될까요
: : 제가 콤포넌트를 하나 만들고 있는데 빌더님의 코드가 중요한 역할을 할거 같아서 그러거든요
: : 수저를 쥐어줘도 알아서 떠먹지도 못하는 염치없는 부탁인줄은 알고있지만
: : 빌더님 부탁 좀 드리겠습니다
:
:
:
:
: 답변) 소스코드 입니다...
:
: <PstChk.cpp>
:
: //---------------------------------------------------------------------------
: #include <windows.h>
: #include <psapi.h>
: #include <string>
: #include <assert.h>
: #pragma hdrstop
:
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
:
: #pragma comment(lib, "psapi.lib")
:
: bool IsDebugger()
: {
: asm {
:     mov eax, fs:[0x18]
:     mov eax, dword ptr [eax + 0x30]
:     mov al, byte ptr [eax + 0x02]
:     and eax, 0xFF
:     }
:     return _EAX;
: }
:
: static std::string getFileName(const std::string &s)
: {
:     char sep = '\\';
:
:     size_t i = s.rfind(sep, s.length( ));
:     if (i != std::string::npos) {
:         return(s.substr(i+1, s.length( ) - i));
:     }
:
:     return("");
: }
:
: typedef NTSTATUS (NTAPI *PFUNC)(HANDLE, INT, PVOID, ULONG, PULONG);
:
: bool IsIDE()
: {
:     DWORD dwLength = 0x18;
:     LPVOID pbuf        = NULL;
:     bool retValue = false;
:     PFUNC pFunc;
:
:     pFunc = (PFUNC)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");
:
:     assert(pFunc);
:
:     pbuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength);
:
:     assert(pbuf);
:
:     NTSTATUS status = pFunc(GetCurrentProcess(), 0, pbuf, dwLength, &dwLength);
:
:     assert(!status);
:
:     HANDLE hProcess;
:     DWORD Access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ;
:
:     hProcess = OpenProcess(Access, FALSE, *PDWORD((PBYTE)pbuf + 0x14)) ;
:
:     char str[MAX_PATH];
:     GetProcessImageFileNameA(hProcess, str, sizeof(str));
:
:     if( strcmpi("bds.exe", getFileName(std::string(str)).c_str()) == 0)
:         retValue = true;
:
:     CloseHandle(hProcess);
:     HeapFree(GetProcessHeap(), 0, pbuf);
:
:     return retValue;
: }
:
:
:
: ...

+ -

관련 글 리스트
68492 빌더님께 염치없지만 소스코드좀 부탁 드립니다 현이 1229 2012/11/08
68495     Re:빌더님께 염치없지만 소스코드좀 부탁 드립니다 빌더(TWx) 1427 2012/11/09
68507         Re:Re: 콤포넌트 불법복제 방지에 유용하하겠네요 현이 1432 2012/11/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.