메이플스토리 1.2.284 놀장강 패치
컨텐츠 정보
- 17 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
가이드 제작자 : 게임존 가가가가
일단은 설명하기에 앞서 지금자다깨서 쓰는글이여서 정신이 음슴으로 음슴체로갈께여
일단 첫번째장에서는 전송해주는 패킷을 변경해서 노란색별이랑 파란색별을 구분해주도록 하겟음
우선 건드릴함수는 PacketProvider에 addItemInfo 함수임
소스 불러온 넷빈에서 컨트롤+f로 additeminfo 검색하면 나옴
이함수가 아이템정보를 클라이언트로 전달해주는 함수임
여기서 한개 문제가있었는데 클라이언트->서버패킷은 저가 개발갤에 올렷듯이 어느정도 야매로 가능한데
서버-> 클라패킷은 BP걸어서 파고들어가거나 IDB로 보는거말고 모르는데
고작 프메를위해서 보안모듈 들어내고 BP거는건 귀찮고 내가 그만큼 리버싱을 잘하지를 못하고
IDB는 갖고있지도않아서 한가지 가정을 내리게댐
메이플패킷은 암호화키값을 빼면 어느정도 내부구조는 비슷할꺼고
그러면 다른팩에서 찾아보면 어느정도 처리가능할 것같앗음
유출본을 함부로 써서 죄송합니당.
위에사진이 Amazingequipscroll 대충해석하면 놀장강이겠네여 이게 처리된코드고
아래쪽이 w스토리addItemInfo 함수중 일부분인데
윗사진은 패킷이 쓰여지는 순서대로되있음 즉 구조를보면
getFireData와 getOwner를 write하는데 그 사이에
Int크기로 0x1700를 write하면 파란색별,
0x1100를 write하면 노란색별이 붙는다는걸 알수있음
조금위로올라가서 두 사진모두 공통적으로
mplew.writeInt(head);
w.writeInt(value);
이렇게 어떠한 Int값을 write해주는데 아마도 그아래에있는 값들을 체크하기위한거라고 생각하고 조금더 위로가보겠음
사진은 없지만 그위에 코드는
int value = 4;
if (equip.getAllDamageP() != 0) {
value += 1;
}
if (equip.getAllStatP() != 0) {
value += 2;
}
if (equip.getFire() >= 0) {
value += 8;
}
// if (equip.getEnhance() > 25) {
value += 16;
// }
이렇게잇음
1,2,4,8,16
아마도 상태를 비트형태로 전달해줘서 복수의 상태를 갖게하기위한거인거같음
무슨말이냐면
1(1)
2(10)
4(100)
8(1000)
16(10000)
이렇게되니까 예를들어 1과 2의 상태를 같이가지면
3이되고 2진수로는 11로 표현되니까 간단하게 복수의상태를 표현할수잇게됨
즉 위에다가 놀장강의 상태숫자를 넣고
아래에다가 함수를 추가해주면 파란색별과 노란색별을 구분할수잇게됨
아마도 이렇게하면될듯
아래에있는 equip.getAmazingequipscroll은 놀장강이 사용된 아이템인지를 체크하기위한 함수
내가쓰는 컨벤션은 함수에는 is보다는 get을 쓰는거를 선호해서 이건 취향차이임
좀더 섬세하게할려면 equip.getEnhance()가 0이상일떄 value 에다가 16을 더하게하고
아래에도 equip.getEnhance()가 0이상일때 0x1700이나 0x1100을 패킷에 쓰게하면될거같음
컴파일은안해봤음 설명용으로 더미파일만들어서 작업한거라서 컴파일될지안될지는 모르겠는데
핵심원리만 알고가면됨 head에 16을 더하고 getFire()호출로 패킷쓰여지는 다음부분에 0x1700이나 0x1100을 쓰면된다.
어떤분이 질문올리셔서 강의겸해서같이썻음
질문은댓글 즐잠
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 2
-
등록일 08.08