Seraph 메모리 검색

일반적인 상황 에서 게임 의 동적 메모리 주소 에 대응 하기 위해 서 우 리 는 기본 주소 로 메모 리 를 읽 지만 전 제 는 기본 주 소 를 알 수 있다 는 것 이다.어떤 게임 은 주 소 를 분석 하기 어렵 고 많은 게임 들 이 숨겨 지고 바 뀌 어서 분석 하기 가 매우 복잡 하 다.이 럴 때 Seraph 를 빌려 우 리 는 다른 방식 으로 메모 리 를 검색 할 수 있다.비록 기본 주 소 를 찾 을 수 없 지만,우 리 는 우리 가 원 하 는 데이터 의 직접 주 소 를 쉽게 찾 을 수 있다.예 를 들 어 우리 가 한 게임 을 실행 할 때 CE 로 피 를 찾 을 수 있 는 주 소 는&H900010 이 고 혈액의 최대 치 는&H900014,MP 주소&H900020,최대 MP&H900024 입 니 다.다음 게임 이 실 행 될 때 이 주소 들 은 모두 변 하지만 우 리 는 이 주소 들 이 서로 간 의 상대 적 인 주소 오프셋 이 변 하지 않 는 다 는 것 을 알 고 있다.즉,최대 혈액 주소=혈액 주소+4,MP 주소=혈액 주소+H10 을 검색 할 수 있 습 니 다.예 를 들 어 우 리 는 우리 의 피/최대 피/MP/최대 MP 가 각각 8000/8000/12000/12000 이라는 것 을 알 고 있다.그러면 스 크 립 트 에서 Seraph 의 메모리 검색엔진 에 주 소 를 검색 해 야 합 니 다.이 주소+4 의 값 도 8000 입 니 다.이 주소+&H10 과+&H14 의 값 은 12000 입 니 다.이런 주 소 는 보통 게임 에 하나 밖 에 없어 요.어떻게 검색 하지?
 
ClearSearchMemoryTable()
AddSearchMemoryItem(&H900010, 2, 8000)
AddSearchMemoryItem(&H900014, 2, 8000)
AddSearchMemoryItem(&H900020, 2, 12000)
AddSearchMemoryItem(&H900024, 2, 12000)
if SearchMemory(&H000000, Address) then
Print(" :"&Address)
end if
주의 하 십시오.상기 코드 에서 저 희 는 AddSearch Memory Item 함 수 를 호출 하여 검색 할 조건 을 설정 합 니 다.첫 번 째 매개 변 수 는 각 값 의 주소 입 니 다.이 주소 가 다음 게임 이 실 행 될 때 올 바 르 지 않 을 까 봐 걱정 하지 마 세 요.Seraph 검색 은 추 가 된 모든 검색 항목 간 의'상대 주소'에 만 관심 이 있 습 니 다.두 번 째 매개 변 수 는 지 정 된 유형 이 고 2 는 4 바이트 의 정형 을 나타 낸다.우 리 는 마찬가지 로 두 바이트,부동 소수점,문자열 등 서로 다른 유형 을 추가 할 수 있다.도움말 매 뉴 얼 참조.세 번 째 매개 변 수 는 이 검색 항목 의 값 입 니 다.이 데이터 의 현재 값 을 입력 해 야 합 니 다.잘못 입력 하면 찾 을 수 없습니다.(스 크 립 트 에서 현재 검색 에 사용 할 값 을 지정 하 는 방법 에 대해 서 는 다음 에 말씀 드 리 겠 습 니 다.첫 번 째 줄 의 Clearsearch Memory Table()은 지난번 에 추 가 된 검색 항목 을 삭제 하 는 데 사 용 됩 니 다.다시 검색 을 시작 하기 전에 우 리 는 모두 이 함 수 를 조정 해 야 한다.이 네 개의 검색 항목 을 추가 한 후에 우 리 는 Search Memory 로 검색 을 시작 합 니 다.첫 번 째 매개 변 수 는 검색 의 시작 값 을 표시 합 니 다.우 리 는 보통&H 000000 을 사용 할 수 있 습 니 다.두 번 째 매개 변수 값 은 검색 한 결 과 를 되 돌려 주 는 데 사 용 됩 니 다.검색 한 결 과 는 첫 번 째 검색 항목 의 주소,즉 현재 피의 주소 입 니 다.우 리 는 이 주 소 를 저장 해서 ReadMemory 로 언제든지 데 이 터 를 읽 을 수 있다.그러면 전체적인 절 차 는 다음 과 같 아야 한다.1.매개 변수 설정 에서 우 리 는 검색 한 데 이 터 를 입력 하 는 데 사용 할 매개 변 수 를 추가 해 야 한다.스 크 립 트 가 시작 되 기 전에 이 데 이 터 를 설정 하 라 고 알려 줍 니 다.예 를 들 어 자신의 피,MP 를 채 우 고 빨간색 과 파란색 이 가득 할 때 스 크 립 트 를 시작 합 니 다.2.스 크 립 트 를 시작 할 때 GetConfigNumber 등 함수 로 설정 한 값 을 꺼 내 고 상기 코드 로 메모 리 를 검색 하여 얻 은 데 이 터 를 저장 합 니 다.3.스 크 립 트 실행 중 저 장 된 주소 와 우리 가 이미 알 고 있 는 오프셋 을 더 해 각종 데이터 의 값 을 수시로 읽 습 니 다.팁:검색 항목 을 어떻게 추가 해 야 내 가 원 하 는 유일한 메모리 주 소 를 가장 편리 하고 정확하게 검색 할 수 있 습 니까?물론 캐릭터 와 관련 이 있 을 수록 좋다.예 를 들 어 캐릭터 의 각 속성 치.더 많은 검색 항목 을 사용 하면 검색 의 부정 확 함 을 효과적으로 방지 할 수 있 습 니 다.(즉,한 주소 만 찾 을 수 있 습 니 다)하지만 스 크 립 트 를 시작 할 때마다 번 거 로 움 을 가 져 옵 니 다.시작 할 때 검색 값 을 설정 해 야 하기 때 문 입 니 다.자주 변 하지 않 는 값 을 사용 하 는 것 을 권장 합 니 다.예 를 들 어 레벨,공격 치 등 은 레벨 이 올 라 가 야만 변 합 니 다.혈 치 는 자주 변 한다.또한 우리 의 경험 에 따 르 면 캐릭터 이름 은 좋 은 검색 항목 이다.캐릭터 이름 의 주 소 를 분석 하고 검색 항목(문자열 형)에 추가 하면 결 과 를 정확하게 검색 할 수 있 습 니 다.일반적인 게임 캐릭터 명 은 UTF 8 형식 이다.캐릭터 이름 을 GBToUTF 8 함수 로 UTF 8 인 코딩 문자열 로 변환 한 다음 AddSearch Memory Item 으로 추가 해 야 할 수도 있 습 니 다.만약 에 우리 가 추가 한 몇 가지 항목 이 부족 하거나 우리 가 자신의 스 크 립 트 를 디 버 깅 할 때 서로 다른 메모리 주 소 를 검색 합 니 다.우 리 는 스 크 립 트 를 모두 출력 시 키 려 고 합 니 다.어떻게 합 니까?
클립보드 로 내용 복사
코드:AddSearchMemoryItem(...)
AddSearchMemoryItem(...)
...
Address=0
while SearchMemory(Address+1, Address)
  Print(" :"&Address)
wend
원 리 는 0 부터 한 주 소 를 검색 할 때마다 먼저 출력 한 다음 에 이 주소+1 에서 계속 검색 하여 찾 을 수 없 을 때 까지 계속 찾 는 것 입 니 다.

좋은 웹페이지 즐겨찾기