메뉴 www.fafan.kr
파판 >> Wii게시판
  • 로그인
  • pc와 스위치 그리고 에디존으로 치트파일 만들기
    작성자 : zz112 | 조회수 : 14283 (2019-06-29 오전 12:40:56)


    https://bsnx.lavatech.top/edizon/

    일단 여기서 에디존 3.1.0을 받아줍니다(3.0.1은 서치속도가 느립니다)

    몬헌 xx를 예시로 들겟습니다

    치트엔진 써본사람은 서치까진 할수잇을거라 믿습니다

    약초가 상자에 10개잇으면 10을검색하고

    게임내에서 값을바꾸고 검색하는건 알거라 믿고 치트파일로 넘어가겟습니다

    base 는 nso 파일의 기본주소입니다 (8000000 으로 시작)

    main 은 nso 파일의 내부 파일 주소입니다 (보통 이값을 기준으로 씀)

    heap 는 nso 파일의 내부 메모리(게임킨다음 만드는) 주소입니다 (몬헌xx는 이값이 뜸)

    이다음은 번역으로 치트명령어를 적어드리겟습니다


    # 코드 유형 0 : 메모리에 기록


    0TMR00AA AAAAAAAA YYYYYYYY (YYYYYYYY)


    T = 쓰기 폭 (1/2/4/8)

    M = 메모리 유형 (0 = 기본 nso, 1 = 힙)

    R = 오프셋으로 추가 될 레지스터

    A = (M)에 상대적인 주소


    코드 유형 0을 사용하면 메모리에 쓸 수 있습니다.


    # 코드 유형 1 : 조건문


    1TMC00AA AAAAAAAA YYYYYYYY (YYYYYYYY)


    T = 비교 값의 폭 (1/2/4/8)

    M = 메모리 유형 (0 = 기본 nso, 1 = 힙)

    C = 비교에 사용할 조건

    A = (M)에 상대적인 주소

    Y = 비교할 값


    # 코드 유형 2 : 조건문 끝


    20000000


    이 코드 유형은 조건 블록 (코드 유형 3 또는 8)을 종료합니다.


    # 코드 유형 3 : 루핑


    300R0000 VVVVVVVV


    R = 루프 카운터에 사용할 레지스터

    V = 루프 카운트


    310R0000


    이 코드 유형은 루프의 끝에서 사용되며 동일한 R 값을 다음과 같이 사용합니다.

    루프의 시작 부분.


    # 코드 유형 4 : 레지스터에 값로드


    400R0000 VVVVVVVV VVVVVVVV


    이 코드 유형은 레지스터 중 하나를 특정 값으로로드합니다


    R = 기입 등록

    V = 등록 할 값


    # 코드 유형 5 : 메모리에서 레지스터로 값로드


    5TMRI0AA AAAAAAAA


    T = 메모리에서로드 할 값의 너비 (1/2/4/8)

    M = 메모리 유형 (0 = 기본 nso, 1 = 힙)

    R = 레지스터 인덱스에서로드

    I = 레지스터 플래그에서로드, 주소 A 대신 레지스터 R에서로드하려면 1로 설정

    A = (M)에 상대적인 주소


    # 코드 타입 6 : 레지스터에서 메모리 주소로 값 저장


    6T0RIor0VVVVVVVVVVVVVVVV


    T = 메모리에 저장할 값의 너비

    R = 메모리 주소를 포함하는 레지스터 색인

    I = 증가 레지스터 플래그, 저장 후 T만큼 레지스터를 증가 시키려면 1로 설정

    o = 레지스터 'r'에서 추가 오프셋을 더합니다.

    r = 오프셋 레지스터 인덱스

    V = 메모리에 저장할 값


    # 코드 유형 7 : 레지스터에 arithmic 연산 적용


    7T0RC000VVVVVVVV


    T = 값의 너비 (1/2/4/8)

    R = arithmic 연산을 적용하기위한 레지스터 인덱스

    C = 적용 할 수있는 연산 :

    0 = 덧셈, 1 = 뺄셈, 2 = 곱셈, 3 = 왼쪽 쉬프트, 4 = 오른쪽 쉬프트

    V = 산술 연산 중에 사용되는 값


    # 코드 유형 8 : 버튼이 눌려 있는지 확인


    8kkkkkkkk


    k = 검사 할 키패드 값. 다양한 키의 16 진수 값은 다음과 같습니다.


    0000001 - A

    0000002 - B

    0000004 - X

    0000008 - Y

    0000010 - 왼쪽 스틱 프레스

    0000020 - 오른쪽 스틱 프레스

    0000040 - L

    0000080 - R

    0000100 - ZL

    0000200 - ZR

    0000400 - 플러스

    0000800 - 빼기

    0001000 - 왼쪽

    0002000 - 위로

    0004000 - 오른쪽

    0008000 - 아래로

    0010000 - 왼쪽 스틱 왼쪽

    0020000 - 왼쪽 위로 스틱

    0040000 - 왼쪽 스틱 오른쪽

    0080000 - 왼쪽 아래로 스틱

    0100000 - 오른쪽 스틱 왼쪽

    0200000 - 오른쪽 위로 스틱

    0400000 - 오른쪽 스틱 오른쪽

    0800000 - 오른쪽 아래로 스틱

    1000000 - SL

    2000000 - SR


    대략적인 명령어는 이러합니다

    이제 값을 고치려고 몬헌xx의 상자약초값을 찾앗습니다

    heap + 0010bd20d0

    그러나 01100000 10bd20d0 00000063를 적어도 값이 바뀌긴합니다만은 이상한수치로 바뀝니다

    여기서 2번째글자가 1 2 4 8 임을 주의해주시고 10bd20d0 에서 값을 빼줍니다 (이경우엔1을뺀다)

    01100000 10bd20cf 00000063 라고 적으니 이제 약초가 99개로 됩니다 치트엔진과 비슷한 원리라고 생각하시면 됩니다(메모리배열순)

    여기서 주의하실점은 08100000 같이 두번쨰가 8 으로 시작할경우 뒤에 00000063이아닌 00000000 00000063 을 적어주셔야합니다

    그런고로 여기선 08100000 10bd20c8 00000000 00000063 이라고 써주시면됍니다

    값마다 정해진 메모리 수치가 잇으니 1,2,4,8 바이트를 전부 적고 하시는게 속편하실겁니다 그럼 즐거운 치팅 되시길

    (pc가 들어간이유는 메모장 수정입니다)









    글쓰기 | 수정 | 삭제 | 목록   

    Lv.3 zz112 (2019-06-29 00:43:14)
    참고로 모든값은main 과 heap의 기준이므로 특정 게임은 전문적인 포인터를 구해야합니다
    Lv.3 다리도리 (2019-06-29 19:04:04)
    에디존을 켰다
    따라해보려했다
    그이후 무슨소리인지 전혀 몰라 포기

    Lv.3 zz112 (2019-06-30 03:31:32)
    00000000
    !@@@@@@@
    느낌표부분설명


    0.값덮어쓰기

    00000000
    @!@@@@@@
    T = 쓸 메모리 크기(1바이트당 1글자 라고생각하시고 정해진수치가 잇다고 생각하시면됨)
    00000000
    @@!@@@@@
    M = 메모리 기준점(0일경우 main 1일경우 heap 기준으로 수치를더하는것)
    00000000
    @@@!@@@@
    R = 레지스터(값을저장하는 0~F까지의 치팅내부 저장고)
    00000000 00000000
    @@@@@@!! !!!!!!!!
    A = M에서 적은 수치에서 +되는값
    00000000 00000000 00000000 00000000
    @@@@@@@@ @@@@@@@@ !!!!!!!! !!!!!!!!
    Y = 쓸메모리(16진수 이므로 0~F(HEX) 로 변환해야함)

    1. 조건문(그값일경우 조건이성립되므로 다음코드실행)

    C = 아직모름
    Y = 비교할값
    나머진 위쪽참고

    2. 조건문 끝(루프,키인식 과같은 조건관련을 끝낼때 쓰는것 ()같은역할)

    무조건 20000000

    3. 루프문(반복문이라고 보시면됨 모든아이템 수정 같은 코드에 사용)

    R = 루프 횟수 저장에 사용할 레지스터
    V = 루프할 횟수

    310R0000
    이것은 루프의 끝에 사용 방금쓴것과 동일한 R수치

    4. 레지스터에 값로드

    그냥 레지스터에 값 저장

    5. 메모리에서 레지스터로 값로드

    메모리 -> 레지스터로 값을 저장 비교나 계산 혹은 포인터(값꼬아놓은것)시 사용

    6. 레지스터에서 메모리 주소로 값 저장

    레지스터에 저장된 값을 메모리로 변환 영문보는법은 아실거라 믿음

    7. 레지스터에 arithmic(더하기 곱하기 뺴기 나누기 등) 연산 적용

    레지스트로 연산을 하는겁니다 조건이만족될시 10 체력 증가 같은 방식이 사용가능합니다
    C 부분이 중요하며 0 더하기 1 뺴기 2 곱하기
    3 왼쪽쉬프트(이진수 로 변환 0100 을 왼쪽으로 옮겨 010 같이 나누는것 나누기 역활)
    4.오른쪽 쉬프트(마찬가지로 0100을 01000 으로 바꿈 곱하기역활)

    8. 버튼입력 확인

    원하는 수치를 더한 값을 적으면끝 00000003 일경우 A+B버튼 같은 형식 조건문 끝을 다는걸잇지말자

    해석본이므로 이해못하시면 저도 설명불가
    Lv.3 zz112 (2019-06-30 03:37:41)
    참고로 pc 게임 치트도 비슷합니다만 더복잡합니다 그건 어셈블리 까지 수정해야 돼니까요 프로그래밍 지식이 없는사람도 최대한 이해하도록 만든것같지만은 복잡하긴 매한가지



    도배방지 : 0

    글쓰기 | 수정 | 삭제 | 목록   

     

    <<171172173174175

    Copyright ⓒ FINALFANTASIA.COM All rights reserved.