본문 바로가기

전체 글137

메모리에 올라간 프로세스에 DLL코드넣기 DLL injection은 간단히 말해 현재 메모리에 로드되어 있는 프로세스의 코드 영역에 접근해서 특정 dll을 로드하는 코드를 실행시켜 임의의 dll을 프로세스의 주소영역에 로딩시키는 것이다. 현재 메모리에 로드되어 있는 프로세스의 코드영역에 우리가 원하는 코드를 삽입하는 방법은 2가지가 있다. 첫번째로 VirtualAllocEx() API를 이용해서 타깃 프로세스의 가상 메모리 영역을 확보해서 그 영역에 WriteProcessMemory()로 우리가 원하는 코드를 삽입하는 방법이 있다. VirtualAlloc()으로 할당한 영역에 삽입한 코드를 실행시키기 위해서 thread 형태로 새로운 실행 플로우를 만든다. 그러나 VirtualAlloc() API는 Win NT 이상에서 지원하는 함수로써 win.. 2014. 10. 23.
MySQL C++ Connection Pool MySQL Connector C++ Database Connection PoolAim The aim of this bit of code is to implement a MySQL connector C++ Database Pool in Windows. A Database pool is normally used by applications to speed up the process of getting a Connection. For an introduction to using MySQL Connector C++ see MySQL Connector C++ Example - Windows cl.exe (VC++). If you'd like to see this in DBPool implemented for Or.. 2014. 10. 8.
환형큐 #pragma once #include "CircularQueue.h" CircularQueue::CircularQueue(void): front(0), rear(0){queue.reserve(Queue_Max);} CircularQueue::~CircularQueue(void){} //큐에 숫자를 추가 하는 함수//intput = 큐에 저장될 수bool CircularQueue::enqueue(char* input){if(((rear + 1) % Queue_Max) != front) //tail 인텍스 + 1과 head인덱스 값이 같으면 큐가 찼음{//큐에 삽입후 tail인덱스 증가strcpy_s(queue[rear++].str, input);rear = rear % Queue_Max;return tr.. 2014. 9. 17.
패턴의 종류 생성 패턴(Creational Patterns)[편집]추상 팩토리 패턴: 동일한 주제의 다른 팩토리를 묶어 준다.빌더 패턴: 생성(construction)과 표기(representation)를 분리해 복잡한 객체를 생성한다팩토리 메서드 패턴: 생성할 객체의 클래스를 국한하지 않고 객체를 생성한다.프로토타입 패턴: 기존 객체를 복제함으로써 객체를 생성한다.싱글턴 패턴: 한 클래스에 한 객체만 존재하도록 제한한다.구조 패턴(Structural Patterns)[편집]어댑터 패턴: 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다.브리지 패턴: 추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다.합성 패턴: 0개, 1개 혹은 그 이상의 객체.. 2014. 9. 11.
디자인패턴 2014. 9. 11.
CPU 정보 얻어오기 사용율 얻어오기 CPU정보 얻어오기 [ CPU정보를 얻어보자 ] 여기서는 현재 CPU종류와 프로세스갯수, 그리고 CPU가 얼마나 사용되고 있는정도를 알아보겠습니다. 첫 번째것은 단순히 함수의 호출로 알 수 있지만, 후자의 경우는 레지스트리에 저장되는 값을 사용하게 됩니다. CPU의 종류와 프로세스 개수 알기 먼저 CPU의 종류와 프로세스 갯수를 알아보는 방법에 대해 알아보겠습니다. 이것 역시 단순히 API함수의 호출로 알 수가 있으므로, 그냥 서술하겠습니다. 이때 사용되는 함수는 GetSystemInfo라는 함수이며, 아래와 같은 구조를 이루고 있습니다. dwProcessorTypeCPU의 타입(자세한 것은 위의 코드 참조)dwNumberOfProcessors유효한 CPU의 수 SYSTEM_INFO sysInfo; Ge.. 2014. 8. 28.
컴파일 속도증가 시키기 Visual Studio는 Compile시 multi-processor compilation을 지원한다.processor는 각각 파일 하나씩을 담당하여 compile을 진행한다.따라서 core가 많을수록 compile속도는 증가한다.multi-processor compilation 옵션을 켰을 때compile속도가 50초에서 6초로 줄어 들었다.Project 의Property Pages에서Configuration Properties    -> C/C++        ->General            맨 밑의 Multi-processor Compilation을 YES로 변경  만약 Minimal Rebuild가 켜져 있을 경우 /MP가 무시되므로 아래와 같이 변경해준다.Configuration Prop.. 2014. 7. 25.
Clinet(under PAT/NAT)에서 발생하는 접속 지연 문제 - Client (under PAT/NAT)에서 발생하는 접속 지연 문제 분석 1. 개요 Linux는 Kernel Parameters를 조정하여 성능 향상을 기대할 수 있습니다.대표적으로 아래와 같은 값들 조정하여 Session Drop같은 문제점을 해결할 수도 있습니다. net.ipv4.tcp_fin_timeout = 10 ## 기본값은 60net.ipv4.tcp_keepalive_time = 1800 ## 기본값은 7200net.core.somaxconn = 2048 ## 기본값은 128 다만, 수백개에 달하는 Kernel Parameters는 그 개수가 방대할 뿐만 아니라 효과가 직접적이기때문에 Parameters가 의미하는 바를 정확히 파악하지 않고 적용하는 것은 문제를 야기할 수도 있습니다. 이.. 2014. 7. 11.
젠킨스 맥버전 스크립트 파일 public class ProjectBuilder { static string[] SCENES = FindEnabledEditorScenes(); static string TARGET_DIR = "test"; [MenuItem("Custom/CI/Build IOS")] static void PerformIOSBuild() { BuildOptions opt = BuildOptions.SymlinkLibraries | BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging | BuildOptions.Development | BuildOptions.None; PlayerSettings.iOS.sdkVers.. 2014. 6. 30.