|
콤포넌트중에 불법복제 막기위해서 빌더에서만 실행되게 하고
아니면 실행이 안되게 하는 상용 콤포넌트들이 이런 방법을 쓰는거였군요
잘쓸께요 감사합니다
빌더(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;
: }
:
:
:
: ...
|