dh_notable
24-11-10, 09:14 AM
Chắc có nhiều bạn cũng đang tìm hiểu cái này. mấy hôm trước có người hỏi mình cách fix sau khi so sánh packet attack của 1.07h và 1.07P+ thì đây là cách fix protocols attack + magic skill .
Cái này rất quan trọng nếu bạn nào muốn develop cho bản ss5 ep4 hoặc ss6
Trong source của ACG hoặc bắt cứ source nào bạn vào hàm hook socket
aRecv ở đây là packet mà hàm hooks socket trong gameserver nhận về sau khi giải mã
int FixProtocol[24]; //
//Magic skill
aRecv[2] ==0x19
FixProtocol[0] = aRecv[6];
FixProtocol[1] = aRecv[7];
FixProtocol[2] = aRecv[8];
FixProtocol[3] = aRecv[9];
aRecv[2] = 0x08;
aRecv[5] = FixProtocol[0];
aRecv[6] = FixProtocol[1];
aRecv[7] = FixProtocol[2];
aRecv[8] = FixProtocol[3];
aRecv[2]==0x1E
FixProtocol[0] = aRecv[5];
FixProtocol[1] = aRecv[6];
FixProtocol[2] = aRecv[3];
FixProtocol[3] = aRecv[4];
aRecv[3] = FixProtocol[0];
aRecv[4] = FixProtocol[1];
aRecv[5] = FixProtocol[2];
aRecv[6] = FixProtocol[3];
aRecv[2]==0xD7
FixProtocol1[0] = aRecv[3];
FixProtocol1[1] = aRecv[4];
FixProtocol1[2] = aRecv[5];
FixProtocol1[3] = aRecv[6];
FixProtocol1[4] = aRecv[7];
FixProtocol1[5] = aRecv[8];
FixProtocol1[6] = aRecv[9];
FixProtocol1[7] = aRecv[10];
FixProtocol1[8] = aRecv[11];
FixProtocol1[9] = aRecv[12];
FixProtocol1[10] = aRecv[13];
FixProtocol1[11] = aRecv[14];
FixProtocol1[12] = aRecv[15];
FixProtocol1[13] = aRecv[16];
FixProtocol1[14] = aRecv[17];
FixProtocol1[15] = aRecv[18];
FixProtocol1[16] = aRecv[19];
FixProtocol1[17] = aRecv[20];
FixProtocol1[18] = aRecv[21];
FixProtocol1[19] = aRecv[22];
FixProtocol1[20] = aRecv[23];
FixProtocol1[21] = aRecv[24];
FixProtocol1[22] = aRecv[25];
FixProtocol1[23] = aRecv[26];
aRecv[3] = FixProtocol1[4];
aRecv[4] = FixProtocol1[5];
aRecv[5] = FixProtocol1[0];
aRecv[6] = FixProtocol1[1];
aRecv[7] = FixProtocol1[2];
aRecv[8] = FixProtocol1[3];
aRecv[9] = FixProtocol1[7];
aRecv[10] = FixProtocol1[8];
aRecv[11] = FixProtocol1[9];
aRecv[12] = FixProtocol1[10];
aRecv[13] = FixProtocol1[11];
aRecv[14] = FixProtocol1[12];
aRecv[15] = FixProtocol1[13];
aRecv[16] = FixProtocol1[14];
aRecv[17] = FixProtocol1[15];
aRecv[18] = FixProtocol1[16];
aRecv[19] = FixProtocol1[17];
aRecv[20] = FixProtocol1[18];
aRecv[21] = FixProtocol1[19];
aRecv[22] = 0x00;
aRecv[23] = FixProtocol1[20];
aRecv[24] = FixProtocol1[21];
aRecv[25] = FixProtocol1[22];
aRecv[26] = FixProtocol1[23];
//attack
aRecv[2]==0xDC
FixProtocol[0] = aRecv[5];
FixProtocol[1] = aRecv[6];
FixProtocol[2] = aRecv[3];
FixProtocol[3] = aRecv[4];
aRecv[3] = FixProtocol[0];
aRecv[4] = FixProtocol[1];
aRecv[5] = FixProtocol[2];
aRecv[6] = FixProtocol[3];
new protocols attack này thực ra là webzen thay đổi vị trí các byte và nếu bạn nào nghiên cứu kĩ sẽ thấy được các chỉ số như index skill, vi trí x,y v.v.v.v.v
Cái này rất quan trọng nếu bạn nào muốn develop cho bản ss5 ep4 hoặc ss6
Trong source của ACG hoặc bắt cứ source nào bạn vào hàm hook socket
aRecv ở đây là packet mà hàm hooks socket trong gameserver nhận về sau khi giải mã
int FixProtocol[24]; //
//Magic skill
aRecv[2] ==0x19
FixProtocol[0] = aRecv[6];
FixProtocol[1] = aRecv[7];
FixProtocol[2] = aRecv[8];
FixProtocol[3] = aRecv[9];
aRecv[2] = 0x08;
aRecv[5] = FixProtocol[0];
aRecv[6] = FixProtocol[1];
aRecv[7] = FixProtocol[2];
aRecv[8] = FixProtocol[3];
aRecv[2]==0x1E
FixProtocol[0] = aRecv[5];
FixProtocol[1] = aRecv[6];
FixProtocol[2] = aRecv[3];
FixProtocol[3] = aRecv[4];
aRecv[3] = FixProtocol[0];
aRecv[4] = FixProtocol[1];
aRecv[5] = FixProtocol[2];
aRecv[6] = FixProtocol[3];
aRecv[2]==0xD7
FixProtocol1[0] = aRecv[3];
FixProtocol1[1] = aRecv[4];
FixProtocol1[2] = aRecv[5];
FixProtocol1[3] = aRecv[6];
FixProtocol1[4] = aRecv[7];
FixProtocol1[5] = aRecv[8];
FixProtocol1[6] = aRecv[9];
FixProtocol1[7] = aRecv[10];
FixProtocol1[8] = aRecv[11];
FixProtocol1[9] = aRecv[12];
FixProtocol1[10] = aRecv[13];
FixProtocol1[11] = aRecv[14];
FixProtocol1[12] = aRecv[15];
FixProtocol1[13] = aRecv[16];
FixProtocol1[14] = aRecv[17];
FixProtocol1[15] = aRecv[18];
FixProtocol1[16] = aRecv[19];
FixProtocol1[17] = aRecv[20];
FixProtocol1[18] = aRecv[21];
FixProtocol1[19] = aRecv[22];
FixProtocol1[20] = aRecv[23];
FixProtocol1[21] = aRecv[24];
FixProtocol1[22] = aRecv[25];
FixProtocol1[23] = aRecv[26];
aRecv[3] = FixProtocol1[4];
aRecv[4] = FixProtocol1[5];
aRecv[5] = FixProtocol1[0];
aRecv[6] = FixProtocol1[1];
aRecv[7] = FixProtocol1[2];
aRecv[8] = FixProtocol1[3];
aRecv[9] = FixProtocol1[7];
aRecv[10] = FixProtocol1[8];
aRecv[11] = FixProtocol1[9];
aRecv[12] = FixProtocol1[10];
aRecv[13] = FixProtocol1[11];
aRecv[14] = FixProtocol1[12];
aRecv[15] = FixProtocol1[13];
aRecv[16] = FixProtocol1[14];
aRecv[17] = FixProtocol1[15];
aRecv[18] = FixProtocol1[16];
aRecv[19] = FixProtocol1[17];
aRecv[20] = FixProtocol1[18];
aRecv[21] = FixProtocol1[19];
aRecv[22] = 0x00;
aRecv[23] = FixProtocol1[20];
aRecv[24] = FixProtocol1[21];
aRecv[25] = FixProtocol1[22];
aRecv[26] = FixProtocol1[23];
//attack
aRecv[2]==0xDC
FixProtocol[0] = aRecv[5];
FixProtocol[1] = aRecv[6];
FixProtocol[2] = aRecv[3];
FixProtocol[3] = aRecv[4];
aRecv[3] = FixProtocol[0];
aRecv[4] = FixProtocol[1];
aRecv[5] = FixProtocol[2];
aRecv[6] = FixProtocol[3];
new protocols attack này thực ra là webzen thay đổi vị trí các byte và nếu bạn nào nghiên cứu kĩ sẽ thấy được các chỉ số như index skill, vi trí x,y v.v.v.v.v