Reverse Engineering/GAMEHACK

Packing프로그램을 보호하는 방법중 하나입니다. 실행파일을 암호화, 압축을 하는 방법을 칭합니다.압축후 암호화를 할 때 다른 섹션을 만들어 그 곳에 복호화 알고리즘을 저장하며, 실행 시 암호화된 데이터를 복호화 후 실행합니다. Themida & Winlicence - 현존하는 가장 강력한 패커중 하나입니다. anti VM, anti Dump, anti Debug, EP 섞기, 리소스 암호화등 수많은 기능들을 제공하며 더미자 제작사에서는 라이센스 관리기능을 추가한 윈라이센스 또한 존재하고 있습니다. 수많은 상용프로그램들에 사용되고 있으며 카카오톡과 같은 프로그램또한 더미다 패커를 사용합니다. UPX- 가벼우며 포맷을 다양하게 지원하는동시에 프리웨어입니다. 패킹시 upx0, upx1 섹션이 생성되고 up..
메모리 비교보호할 메모리를 읽어봐 비교합니다.클라이언트에서 int형 변수에 17을 넣어주고 출력해줬었습니다.push 11로 17을 넣어주고 있습니다.push 30으로 변조하게되면 감지하게 됩니다. CheckRemoteDebuggerPresentIsDebuggerPresent 함수와 동일한 역할을 합니다만, 현재 시점을 기준으로 값을 불러옵니다.   난독화코드를 읽기 어렵게 만들어 분석을 어렵게 하는 기술입니다.변수명, 쓸모없는 코드등을 이용해 읽기 어렵게 만듭니다.암호화와는 다른 개념이며, 암호화는 키값이 있어야 볼 수 있습니다.  PE Header메모리 상에 존재하는 PE Header를 지워 덤핑을 방해합니다. Junk Code / Dummy Code실제로는 아무 역할도 하지 않는 코드입니다만, 코드 ..
브레이크포인트실행중인 대상 프로세스를 디버깅을위해 코드진행을 의도적으로 멈추게 하는걸 뜻합니다.멈춘시점의 파라미터, 변수의 값, 레지스터 등을 알 수 있으며, 소프트웨어 브레이크포인트, 하드웨어 브레이크포인트, 메모리 브레이크포인트로 3종류가 존재합니다.   SoftwareBreakPointINT 3 인스트럭션은 Software BP로 많이 사용되는 BP중 하나이며 횟수 제한이 없습니다만 코드변경이 있기에 crc체크를 하는 프로그램에서는 걸리게됩니다.만약 디버깅 중이라면 해당 인스트럭션이 실행될 때 BP가 트리거 되며 자연스럽게 BP로 인식해 넘어가지만아닐때는 예외가 발생하며 예외구문에 걸리게 됩니다. 디버거에서 OPCODE는 CC로 설정됩니다.INT 41 명령어는 커널 디버거를 탐지할 때 사용되며, 보..
들어가며안티리버싱 테크닉을 이용해 안티치트솔루션 (게임가드 같은)을 만드는 걸 간단히 다뤄보겠습니다.유저모드 (ring3) 위주이며 커널모드 (ring0)의 드라이버등은 다루지 않습니다.  리버싱Reverse Engineering 을 줄여 Reversing으로 흔히 말하며, RE, 역공학, RCE 등으로 불리기도 합니다. 뜻대로 역으로 분석하는걸 칭하며, 대상으로는 exe, dll, sys 파일 등이 있습니다. 이러한 실행파일들을 대상으로 코드를 분석해 프로그램이 어떤 기능을 하는지 함수는 어떤 역할인지를 알아내는 작업하며, 프로그래밍 언어가 하나가 아닌만큼 여러 언어로 만들어졌을테니 어셈블리어를 알아두어야 합니다.  안티리버싱말 그대로 리버싱을 어렵게 만드는 작업입니다. 난독화, 가상화하여 코드 읽기의..
https://imoracle.tistory.com/50 [Game] 지뢰찾기 월핵 제작 - 1 -https://imoracle.tistory.com/51 [Game] 지뢰찾기 월핵 제작 - 2 -이어서이제 메모리를 읽어와서, 2차원 배열에 값을 넣어주어야 합니다. 프로그램을 열어줍니다. 실시간으로 볼 수 있게 띄워주겠습니다.imoracle.tistory.com이어서이제 메모리를 읽어와서, 2차원 배열에 값을 넣어주어야 합니다. 프로그램을 열어줍니다. 실시간으로 볼 수 있게 띄워주겠습니다.전 포스팅에서 봤다시피 0x20 은 32입니다.시작주소 + j 를 해주며 다음칸 [열]로 넘어갑니다.i * 32를 해주며 시작주소에서 다음시작주소[행]로 넘어갑니다.  그리고 만들어둔 data[9, 9] 에 값을 넣어주..
https://imoracle.tistory.com/51 [Game] 지뢰찾기 월핵 제작 - 2 -이어서이제 메모리를 읽어와서, 2차원 배열에 값을 넣어주어야 합니다. 프로그램을 열어줍니다. 실시간으로 볼 수 있게 띄워주겠습니다.전 포스팅에서 봤다시피 0x20 은 32입니다.시작주소 + jimoracle.tistory.com 들어가며  지뢰의 위치를 찾아 그려주는 프로그램을 만들어 보겠습니다.C#을 이용해서 만들어 보겠습니다. 시작  지금와서 보니 왜 이걸 Decimal로 보고 있었을까 싶습니다.어쨌든 143 은 0x8F 입니다. 16은 0x10 입니다.0x10 을 기점으로 행의 시작과 끝을 구분합니다. 사실 위의 사진을 캡쳐 할때만해도 아무생각없이 그냥 크기대로 들어가는줄 알고 진행하다2차원 배열에 값..
https://imoracle.tistory.com/48 [Assaultcube] FPS게임 분석 및 핵 제작 - 1 -https://imoracle.tistory.com/49 [Assaultcube] FPS게임 분석 및 핵 제작 - 2 -핵툴 개발 리버스 엔지니어링을 통해 동작중인 게임의 메모리주소를 얻은 후 프로세스에 접근하는 방식은 내부접근과 외부접근imoracle.tistory.com 핵툴 개발 리버스 엔지니어링을 통해 동작중인 게임의 메모리주소를 얻은 후 프로세스에 접근하는 방식은 내부접근과 외부접근으로 두가지의 방식이 존재합니다.Internal (내부접근)- Process에 DLL을 Injection 하는 DLL-Injection 기법을 사용합니다. 직접적으로 주입하므로 메모리에 직접 접근이 ..
https://imoracle.tistory.com/49 [Assaultcube] FPS게임 분석 및 핵 제작 - 2 -핵툴 개발 리버스 엔지니어링을 통해 동작중인 게임의 메모리주소를 얻은 후 프로세스에 접근하는 방식은 내부접근과 외부접근으로 두가지의 방식이 존재합니다.Internal (내부접근)- Process에 DLLimoracle.tistory.com들어가며 메모리해킹은 특히 게임분야에 사용되며, 유저들에게 피해를 입히는 기술로 사용됩니다.이러한 해킹프로그램을 통칭 치트 또는 핵이라 부릅니다.월핵, 맵핵, 스피드핵, 에임봇, 워프 등이 포함됩니다. 주로 사용되는 언어는 C/C++, C#, Delphi 가 있고, 매크로의 경우 AutoHotKey가 있습니다. 선행지식으로는 Assembly : 분석할 ..
시유리
'Reverse Engineering/GAMEHACK' 카테고리의 글 목록