NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 치트 엔진 마지막 - 메모리플 매크로 프로그램 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 치트엔진에서 제공해주는 예제의 마지막인 Step 9를 연습해볼 차례입니다.

    bQFW6iB.png

     

    9단계: 공유 코드: (PW=31337157)
    이 단계에서는 동일한 유형의 다른 객체에 사용되는 코드를 처리하는 방법을 설명합니다.
    
    유닛이나 자신의 플레이어의 체력을 발견한 경우, 코드를 제거하면 적에게도 영향을 미친다는 사실을 알게 될 것입니다.
    이러한 경우에는 자신의 개체와 적의 개체를 구별하는 방법을 찾아야 합니다.
    때때로 이것은 종종 플레이어의 고유한 위치를 가리키는 처음 4바이트(기능 포인터 테이블)를 확인하는 것만큼 쉬우며 때로는 팀 번호이거나 포인터에 대한 포인터일 수도 있습니다. 플레이어 이름. 그것은 모두 게임의 복잡성과 운에 달려 있습니다.
    
    가장 쉬운 방법은 찾은 코드가 쓰는 주소를 찾은 다음 데이터 분석 기능을 사용하여 두 구조와 비교하는 것입니다. (당신의 유닛/플레이어와 적) 그리고 그들을 구별할 수 있는 방법을 찾을 수 있는지 살펴보세요.
    자신과 컴퓨터를 구별하는 방법을 찾았으면 조건을 확인하는 어셈블러 스크립트를 삽입한 다음 코드를 실행하지 않거나 다른 작업을 수행할 수 있습니다. (예를 들어 한 번의 적중으로 사망)
    또는 이를 사용하여 검색에 사용할 수 있는 "바이트 배열" 문자열을 구축하여 모든 플레이어 또는 적 플레이어 목록을 생성할 수도 있습니다.
    이 튜토리얼에서는 여러분이 플레이하게 될 가장 놀라운 게임을 구현했습니다.
    플레이어는 4명입니다. 2명의 플레이어는 귀하의 팀에 속하고, 2명의 플레이어는 컴퓨터에 속합니다.
    당신의 임무는 건강을 기록하는 코드를 찾아 건강이 얼어붙지 않고 게임에서 승리할 수 있도록 만드는 것입니다.
    계속하려면 "게임을 다시 시작하고 자동 실행"을 눌러 코드가 올바른지 테스트하세요.
    
    
    팁: 건강은 부동입니다.
    팁 2: 여러 가지 솔루션이 있습니다

     

    이 테스트는 플레이어 1, 2가 플레이어 3, 4를 이기도록 코드를 수정해야 합니다. 설명에서는 플레이어 1, 2는 우리편이고 플레이어 3, 4는 적이라고 합니다. 이미 앞에서 코드를 변경해서 체력이 1씩 줄어드는 것을 2씩 증가하도록 하는 예제를 확인 했습니다. 여기서도 이와 비슷한 방식으로 처리하면 됩니다.

     

    우선 100을 먼저 검색 해볼까요? 엄청 많이 나오네요.

    50ZVFvn.png

     

     

    플레이어 1의 ①Attack 버튼을 클릭하세요. Health가 95로 깍였습니다. 치트 엔진의 Value에 ②95를 입력하고, ③Next Scan 버튼을 클릭 해보세요. ④메모리 주소가 검색되지 않았습니다. 왜 그럴까요? 일반적으로 캐릭터의 정보는 구조체에 값을 담아둡니다. 캐릭터뿐만 아니라 몬스터나 도구등등... 여러가지 값을 가지는 오브젝트들은 대부분 구조체라고 생각하시면 됩니다. 플레이어 1의 체력은 부동소수점(Float) 타입인가 봅니다. 위 설명을 잘 읽어보면 적혀 잇는거 같네요^^

    wkFkN2l.png

     

     

    이번 예제에서는 배열이라고 가정하고, Value Type을 Float로 변경하고 실행 해보겠습니다.

    XW0bHSF.png

     

     

    First Scan을 눌러보세요. 정말 많은 메모리 주소가 검색됩니다.

    Opkugf4.png

     

     

    튜토리얼 창에서 플레이어 1의 어택 버튼을 클릭하고, 변경된 값을 치트 엔진의 Value에 입력하고, Next Scan을 클릭하세요. 하나의 메모리 주소가 검색 될겁니다.

    MBkwGR5.png

     

     

    검색된 ①메모리 주소를 더블 클릭하여 하단의 메모리 주소 목록에 추가하세요. ②메모리 주소에서 우클릭 후 Find out what writes to this address를 클릭하세요. 플레이어 1의 ③Attack 버튼을 클릭하면 ④The following opcodes write to <메모리 주소>에 어셈블리 코드가 나타납니다.

    jthUnHb.png

     

     

    어셈블리 명령을 보면 ebx 메모리 주소 포인터에 + 4 오프셋이 적용된걸 알 수 있습니다. 플레이어 1의 구조체가 선언된 메모리 공간을 확인하기 위해 Browse this memory region을 눌러서 Memory Viewer를 실행하세요

    Q6YKWsK.png

     

     

    그리고, 캐릭터 이름인 Dave 왼쪽으로 체력 값을 찾아보세요.

    WiMaU5R.png

     

     

    실제 EBX의 값은 06718090입니다. 여기에 오프셋 4를 했기 때문에 이 값의 시작 위치의 메모리 주소는 06718094가 됩니다.

    yFVV8VT.png

     

     

    캐릭터 이름이 시작되는 D의 메모리 주소는 067180A5라는걸 알았습니다. 여기서 값 주소인 06718090을 빼면 오프셋을 알 수 있습니다

    hzgOzIN.png

     

     

    16진수 계산기로 계산해보면 아래와 같이 15가 나옵니다. 인터넷에 16진수 계산기로 검색하면 아래와 같은 사이트가 나옵니다^^

    lcX1zBK.png

     

     

    Tools 메뉴에서 Auto Assemble을 클릭하세요.

    vdyijnQ.png

     

     

    Template 메뉴의 Code Injection을 클릭하세요.

    2oOrloh.png

     

     

    cmp를 이용해서 ebx에서 오프셋 15만큼 이동한 값이 D인지 확인합니다. D라면, exit로 레이블을 이동해서 실행해야 할 mov [ebx+4],eax를 건너뛰게 만듭니다.

    g7aXySB.png

     

     

    튜토리얼에서 Restart game and autoplay를 클릭 해보세요. Dave 캐릭터가 무적이 되어 혼자 살아남게 됩니다.

    ZGSL2aY.png

     

     

    이렇게해서 치트엔진을 이용한 게임 메모리플을 만들어 봤습니다. 메모리플이라기 보단 핵이라고 보시면 됩니다. 메모리플이 되려면 거래소 가격을 가져와서 매크로 프로그램으로 매도/매수를 계산해서 물건을 사거나 파는걸 말합니다. 또는 미니맵이나 지도상의 좌표를 가져와서 캐릭터를 이동할때도 유용하게 사용할 수 있습니다. 현존하는 대부분의 이미지 매크로 프로그램들이 이미지에서 숫자를 추출할 때 OCR을 사용하는데요. 이게 정확도가 그리 좋지 않아서 가끔(?) 문제가 발생하기도 합니다. 그래서, 이런 연산에 관련된 것들은 메모리 주소의 값을 읽어와서 매크로 프로그램과 같이 사용하는게 효율적입니다.

     

    지금까지 치트엔진을 설치하고, 튜토리얼 Step 1~9까지 테스트 및 연습을 해봤는데요. 처음 접하는 프로그램이라서 글을 작성하는데 많은 시간이 소요되었습니다. 그리고, 툴을 사용하는데 익숙하지 않다보니 인터넷에 관련 글들을 정독하면서 따라하느라 더 많은 시간이 걸린거 같아요. 사실, 회사에서 업우용 프로그램을 만들때는 고정 월급이 매달 꽂히다보니 공부하면서 일해도 됩니다. 그래야 시간도 잘 가니까요^^

     

    개인적으로 공부하는 것들은 재미가 있거나 미래에 어떤 가치를 만들어내지 않으면 많이 힘든 부분입니다. 특히나~ 재미가 없다면 쉽게 포기하게 될거예요. 예제는 단순한 내용이라서 금방 따라했지만, 실제로 어떤 프로그램에 적용한다면 만만치 않은 작업이 될게 분명합니다. 그래서, 적절하게 메모리 매크로와 이미지 매크로를 융합해서 사용하시는걸 추천드립니다. 과정이야 어떻든 결과만 나온다면 사용하는데 무리는 없을테니까요.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.