NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 3
  • 매뉴얼

    NGM 3의 매뉴얼입니다.

    NGM 3

    NGM 3의 매뉴얼입니다.

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

    에디터 NGM 3.0 메모리 액션. (메모리 읽기)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 오늘은 새롭게 추가된 메모리 관련 액션에 대해서 알아볼 건데요. 단순하게 NGM만으로 처리할 수는 없습니다. 실제 제어하려는 응용 프로그램의 메모리 주소를 알아와야 하고, 해당 값의 버퍼 사이즈도 대략이나마 유추할 수 있어야 합니다. 우선, 무료로 프로그램을 디버깅할 수 있는 툴을 다운로드하여야 합니다. 아래 링크를 클릭하여 OllyDbg를 다운로드 받으세요. 홈페이지는 http://www.ollydbg.de/ 입니다.

    OllyDbg 다운로드 ]

    img.png




    이외에도 IDA Pro나 Cheat Engine 등등... 리버스 엔지니어링 또는 크랙, 핵을 만드는 프로그램들이 있습니다. 치트 엔진은 원조격으로 메모리를 수정하여 오토를 만드는데 많이 사용되고 있습니다.

    img.gif



    메모리 주소를 알아내기 위해 다운로드한 OllyDbg(올리 디버거)를 실행하세요. 아래 그림처럼 OLLYDBG.EXE를 선택하고 우클릭하세요. 그리고 관리자 권한으로 실행하세요.

    img.png



    File > Open 메뉴로 윈도우의 Notepad를 열어줍니다. 메모장은 사용자마다 다르긴 하지만, 일반적으로 윈도우의 시스템 32에 있습니다.

    img.png



    메모장을 올리 디버거에서 열면 아래 그림과 같은 창을 볼 수 있습니다. 좌측 상단부터 시계 방향으로 어셈블리, 레지스터, 스택, 덤프 창이 있습니다. 자세한 내용은 별도로 작성하도록 할게요.

    참고로, File > Attach 메뉴로 실행 중인 프로세스를 바로 열 수도 있습니다.

    img.png



    메모장을 열기 위한 디버깅 상태입니다. 이 상태에서는 명령이 전달되지 않으므로, 아래 그림처럼 실행 버튼(F9)을 한번 눌러줘야 메모장이 실행됩니다.

    img.png



    메모장이 실행되면, "Welcome to NGM!"를 입력하세요.

    img.png



    현재 메모리를 덤프(시스템 또는 스레드, 메모리와 같은 정보를 가져온다는 뜻) 뜨기 위해 메모리 맵을 열어줍니다. 단축키는 Alt+M입니다. 또는 상단 메뉴의 M아이콘을 클릭하세요.

    img.png



    Ctrl+B를 눌러서 바이너리 서치를 실행하세요. 그리고, 찾을 유니코드(Welcome)를 입력한 후 OK를 눌러줍니다.

    img.png



    아래 그림처럼 Dump창에서 메모리 주소(0x03312770)를 확인할 수 있습니다.

    img.png



    메모리 주소를 알아냈으니 이제 저 값을 가져오는 아주 간단한 스크립트를 하나 만들어 보도록 하겠습니다. 테스트를 위해 새로운 스크립트를 하나 추가하세요.

    메뉴: File > New > Script

    img.png



    아래 그림을 참고하여 액션을 추가하고 메모리 읽기 속성을 채워줍니다.

    1. 메모리 카테고리의 메모리 읽기 액션을 선택하세요.
    2. 드래그 앤 드롭하여 추가합니다.
    3. 위에서 찾은 메모리 주소를 입력하세요. (숫자 값으로 자동 변환됩니다.)
    4. 버퍼 사이즈를 입력하세요. (글자 수 * 2)
    5. 메모리를 읽는 프로그램을 선택하세요.
    img.png



    읽어온 값을 변수에 저장하고, 메시지 창으로 확인하는 게 좋겠죠? 아래 그림처럼 변수와 메시지 박스를 추가하세요.

    변수는 Functions에 있고, 메시지 박스는 Tools의 조건 카테고리에 있습니다. 그리고 변수의 이름은 "메모리"입니다.

    img.png

     


    메모리 읽기 액션의 Set Variables를 클릭하여 아래 그림처럼 추가하세요.

    img.png



    그리고 메시지 박스의 Get Variables는 아래와 같이 설정하세요.

    img.png



    메모리를 읽기 위한 준비가 완료되었습니다. 스크립트를 실행하면 아래처럼 메시지 박스에 내용이 표시됩니다.

    img.png



    간단하게 메모리 주소에 저장된 데이터를 가져오는 방법에 대해 알아봤습니다. 프로그램은 내부적으로 어떤 값(형식에 맞는... int, double, string, point와 같은...)을 가지고 로직을 처리하게 됩니다. 만약, 값이 아닌 분기문에서 true, false에 대해 무조건 true만 나오게 할 수도 있죠^^;


    메모리 - 메모리 읽기 속성

    1. Get Variables: 변수의 값을 가져옵니다.
    2. Set Variables: 메모리 읽기의 속성을 변수에 저장합니다.
    3. After Delay: 이 액션이 실행된 후 지연 시간입니다.
    4. Before Delay: 이 액션이 실행되기 전 지연 시간입니다.
    5. Buffer Size: 메모리에서 읽어올 데이터의 사이즈입니다.
    6. Children: 비활성 컨트롤의 구조를 표시합니다. 이 값은 Find Control을 통해 자동으로 입력됩니다.
    7. Description: 이 액션의 설명을 입력할 수 있습니다.
    8. Memory Address: 데이터를 읽어올 메모리의 주소입니다.
    9. Save Data: 변수에 저장할 때 사용되는 옵션입니다. 
      - 읽기 전용으로 메모리에서 읽어온 데이타를 변수에 저장할 때 사용합니다.
    10. Find Control: 이미지에서 글자를 판독할 응용 프로그램 또는 컨트롤을 선택합니다.
    11. ID: 이 액션을 식별할 수 있는 유니크한 아이디입니다.
    12. Is Used: 이 값을 False로 변경하면 스크립트가 실행될 때 이 액션은 제외됩니다.
    img.png



    다음에는 메모리 값을 수정하는 방법에 대해 알아볼게요~

    img.gif



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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.