anhphu
13-02-12, 08:03 AM
anhtanh95's team Xin chân trọng giới thiệu :)
CÁCH UPDATE VESION MAPLESTORY
Nếu bạn không muốn đọc văn bản dài , Thì Cái hướng dẫn này không phải dành cho bạn nhé. Nếu bạn quá lười biếng để đọc điều này và bạn không có sự kiên nhẫn và thực sự bạn nên Dừng lại ở đây được rồi!:-?
Giới thiệu chung:
Cập nhật cần có thời gian và kiến thức chung của game này. Một số người có thể sáng tạo là tốt. Một vài điều cơ bản phải được biết trước nếu có ai quan tâm đến việc cập nhật phiên bản . Đây là những định nghĩa rất cơ bản và không có điều này, nó là khá vô dụng để tiến hành và hơn nữa. Tôi sẽ cung cấp cho bạn một cách hiệu quả để sniff packet và cập nhật có thể là một vài thủ thuật để tiết kiệm thời gian, nhưng nó vẫn còn đến để tìm hiểu những logic đằng sau Update. Tôi cũng giả định này được cập nhật cho Source OdinMS nhưng các khái niệm tương tự có thể được áp dụng cho Vana và DelphiMS. Tôi đã không bao giờ dùng Titan hoặc C # source vì vậy tôi không thể nói như vậy, nhưng các packet tương tự cho các trò chơi khác. Tôi cũng sẽ sử dụng v88 và v99 như tôi quen thuộc nhất với v88 và GMS tại v99. Tuy nhiên, nếu bạn muốn cập nhật MSEA, hướng dẫn này vẫn có tác dụng với nó. Tôi cũng chắc chắn rằng tài liệu hướng dẫn này hoạt động cho cả hai source odinms bằng cách sử dụng các properties của tập tin và những inbound và outbound.
Packet là gì?
Nếu bạn thực sự muốn chạy một Sever thành công với sự cạnh tranh không, update vesion mới nhất là quan trọng vì nó không được cạnh tranh và luôn được ưa thích. Bây giờ bạn hỏi tôi lý do tại sao tôi đã không làm điều này cho MoongraMS(theo Flav(bên Ragezone),nói "I don't know how to"). Tôi chỉ đơn giản là không có thời gian và sức lực (mệt mõi chẳng hạn) cho các công cụ này nữa mặc dù tôi đã thực hiện nó trước đây, tôi không có động lực hoặc thời gian để làm điều đó nữa. Nếu bạn đang đi "nhằm mục đích cho # 1" bạn sẽ có để theo kịp với sự cạnh tranh đang diễn ra. Thật đấy, các tính năng tùy chỉnh và trang web là "gần như là quan trọng" như các server riêng của mình, nhưng đây là cách dễ nhất để có được version một cách nhanh chóng và không được banned như là một máy chủ khủng khiếp là chỉ đầu vì tỷ lệ người chơi.
Các định nghĩa và thông tin cơ bản:
-Byte: 1 byte
-Short: 2 byte
-Int: 4 byte
-Long: 8 byte
-Các gói dữ liệu trên MapleStory là ở định dạng về cuối nhỏ, có nghĩa là một lần chuyển đổi để hex, họ được đảo ngược. Điều này có nghĩa rằng nếu một cái gì đó là 0x12345678, một lần chuyển đổi về cuối nhỏ, nó sẽ là 78 56 34 12.
-Các gói tin được gửi đi giữa các máy chủ và client để truyền dữ liệu và thông tin. GUI là một phóng chiếu của nó, trong một cách.
-Hoạt động được xử lý bởi các gói tin trên MapleStory được định nghĩa bởi một đoạn ngắn (2 bytes) vào đầu của gói tin. Một số hành động có thể chia sẻ cùng một ngắn. Chúng ta gọi nó là Opcode. Cả hai gói tin gửi đi và nhận được bởi các máy chủ có opcodes. Cách đặt tên các opcodes này sẽ giúp rất nhiều.
-Điều này sẽ được thực hiện trong hệ thập lục phân, do đó, nó là cơ sở 16. Nó rất hữu ích để có máy tính cho hex đến tháng mười hai và tháng mười hai để hex tại đã sẵn sàng. Nó cũng hữu ích để biết một số vấn đề cơ bản chẳng hạn như 0xA = 10, 0xB = 11, và có thể một số bội số của 16. Nó rất hữu ích cũng biết làm thế nào để nhân và thêm vào trong đầu của bạn. Vì tôi có thể làm điều đó, cho tất cả các byte tôi có thể tính toán các giá trị khá nhanh bằng cách thực hiện nó trong đầu của tôi.
-Handlers cho các nhận các gói tin. MaplePacketCreator là cho các gói tin gửi.
Thông tin khác về Misc:
-Levels, item slots are bytes
-Jobs, stats are shorts
-Mesos, exp, map id are ints
-Buffstats are saved into longs
Cập nhật Opcodes:
Giới thiệu
Cập nhật opcodes là bước đầu tiên để cập nhật phiên bản từ một đến khác. Bước này có hoặc rất nhiều thời gian, hoặc một chút thời gian và logic.
Điều đầu tiên cần biết là để biết về những điều phổ biến là nói không với Nexon. Điều quan trọng nhất là biết rằng Nexon thường giữ các các opcodes giữa các phiên bản. Đây không phải là luôn luôn đúng như một số opcodes di chuyển xung quanh trong một số phiên bản, nhưng hầu hết các phần, hầu hết các opcodes ở lại. Kiến thức về những gì được thêm vào và gỡ bỏ phần nào quan trọng là tốt. Ví dụ trong v88 có cuốn sách quái vật, nhưng do bản Big Bang đã được gỡ bỏ. Có thể rằng các opcodes đã được gỡ bỏ là tốt, gây ra các giá trị của opcodes đi xuống.
Làm thế nào để làm việc một Packet Sniffer:
Sau khi biết điều này, đó là thời gian để đi và lấy một số gói dữ liệu từ các trò chơi. Cá nhân tôi ủng hộ SnowSniffer chỉ vì bản in ASCII, nhưng tôi hiện đang sử dụng MapleShark và sẽ được viết một tài liệu hướng dẫn về nó.Cho phép google và chỉ cần tìm phiên bản mới nhất, mà đã có bản mapleshark 1013. Nếu bạn không có .net framework,và MapleShark cần nó để chạy. Tải về và cài đặt winpcap (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>) trong khi bạn đang ở đó vì đây là cần thiết cho sniffing packet.
Tôi đã nhận được một số câu hỏi trên MapleShark không làm việc cho một vài người, vì vậy tôi cũng sẽ bao gồm một hướng dẫn nhỏ. Mở file thực thi và thiết lập các thiết lập. Nếu mạng của bạn là không dây, chọnwireless. Nếu mạng bạn là ethernet, sử dụng local area connection khi được yêu cầu cho nó. Đôi khi bạn phải chọn tùy chọn số 2 của bộ phận này.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
MapleShark cũng yêu cầu bạn cho các port mà bạn muốn sniff. Đặt ra các từ 7575-8888. Các cổng không đạt đến 8888, nhưng sử dụng 8888 cho việc đơn giản. Khi bạn mở cổng này, bạn có thể thay đổi kênh hoặc đăng nhập vào trò chơi và các gói dữ liệu sẽ bắt đầu được đăng nhập.
|-) mệt quá nhỉ
Làm thế nào để Sniff packet một cách hiệu quả:
sniffing packet tốt không chỉ suy nghĩ ít di chuyển xung quanh và đào tạo về quái vật, trái với niềm tin phổ biến do các released packets phát hành. Không, những gói dữ liệu là khá vô dụng và được nhiều người cám ơn họ. Khi bạn sniff packet, bạn cần có được những gì bạn muốn, một cách nhanh chóng và rõ ràng. Để sniff packet một cách hiệu quả, thực hiện một chức năng tại một thời điểm. Xem xét thông qua các released packet nhận được và gửi các released packet và tìm những người bạn muốn Sniff. Phần quan trọng nhất là để nói những gì bạn muốn sniff trước khi sniff các hành động chính xác. Ví dụ nếu bạn muốnsniff meso và drop, không chỉ cần thả mesos và di chuyển, nói thả mesos và sau đó thả mesos. Cũng biết bao nhiêu mesos bạn giảm xuống. Nói một cái gì đó giống như thả 256 mesos là tốt hơn so với nói rằng thả mesos. Tuy nhiên, nếu bạn nói rằng bạn đang giảm 256 mesos, bạn tốt hơn thả 256 mesos. Nếu không, bạn sẽ bị nhầm lẫn. Điều này sẽ hữu ích sau khi bạn nhìn vào đăng nhập của bạn. một khi bạn có một đăng nhập khá lớn với nhiều điế sniff, bạn có thể ngừng sniff. Nếu đây là lần đầu tiên của bạn update và bạn có ít kinh nghiệm, sau đó xem và nghiên cứu một loạt các thứ để bạn có thể điền vào các opcodes không rõ sau này.
Phân tích các bản ghi packet và update Opcode đầu tiên:
Bây giờ bạn có các bản ghi packet dữ liệu, đăng nhập vào MapleStory. Bạn không muốn các packet dữ liệu tới nhiều hơn nữa. Bây giờ trở lại giao diện MapleShark và di chuyển xuống mỗi released packet được đăng nhập. Các released packet nhận được bởi máy chủ sẽ được ra bên ngoài, và các released packet gửi đi bởi các máy chủ sẽ được gửi đến. Tên truy cập trực giác, nhưng nếu bạn nghĩ về nó theo cách khác xung quanh bằng cách thay thế máy chủ với client, sau đó nó sẽ có ý nghĩa (nhận của client = inbound). Opcode được cho ở bên cạnh cùng với chiều dài packet. Điều này sẽ hữu ích sau này. Bây giờ là thời gian để tìm thấy khi bạn nói chuyện. Di chuyển xuống mỗi gói tin cho đến khi bạn tìm thấy nơi bạn đã nói chuyện. Các hộp văn bản phía dưới bên phải của MapleShark cung cấp cho bạn một bản in ASCII.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Nói một cách cơ bản, di chuyển xuống cho đến khi bạn thấy những gì bạn nói trong văn bản đơn giản. Nếu nó đi, sau đó released packet đó sẽ được nhận các released packet. Lấy opcode mà MapleShark nói rằng đó là chính xác.Version v88 là 0x31. Version v99 là 0x37. Điều hướng đến các tập tin mà các gói tin receive được lưu trữ. Lấy giá trị cũ của GENERAL_CHAT và thay đổi điều đó với giá trị mới. Ví dụ: v88 là 0x31, v99 = 0x37. Thay đổi 0x31 đến 0x37. Kể từ 0x37-0x31 = 6, lưu ý rằng nó là 6. Điều này sẽ có ích sau này. Nếu bạn có kinh nghiệm hoặc rất tốt tại toán học Cao, bạn có thể bỏ qua bước này. Bạn đã cập nhật opcode đầu tiên của bạn. Tiếp theo quay trở lại MapleShark và xem xét các released packet gửi đến có chứa những từ bạn đã nói. Đây cũng là GENERAL_CHAT, nhưng trong gửi opcodes. Tới nơi opcodes của bạn được lưu trữ và thay đổi điều đó cho CHATTEXT là tốt. Trong v88 là 0xA2. Trong 0x99 là 0xAF.
Opcode Cách đặt tên:
Bây giờ bạn có thể suy nghĩ, làm thế nào tôi biết đó là CHATTEXT và GENERAL_CHAT để gửi và nhận các released packet tương ứng? Có lẽ bạn có thể nghĩ, làm thế nào bạn sẽ biết những gì các tên gói là phải tắt file .bat không? Không có đơn giản câu trả lời cho điều này. Tôi chỉ biết bởi vì tôi đã làm điều này nhiều lần. Mặc dù các packet này không bị đặt tên, một số là một chút bối rối. Ví dụ, trong mã source của tôi Tôi có ARAN_COMBO cho nhận được gói tin, nhưng xử lý được đặt tên là DamageMonsterHandler cho một số lý do ngu ngốc. Thông thường để tìm ra điều này lần đầu tiên có thể mất một lúc. Dưới đây là một số lời khuyên hữu ích: Hãy nhớ rằng các packet opcodes ở lại để cho hầu hết các phần. Trong v88, ARAN_COMBO đến trước khi CS_OPERATION(cash shop). Nếu bạn có một cái gì đó như ARAN_COMBO và nó là 0x9999, sau đó nó là cách quá cao vì nó lớn hơn giá trị của cash shop(khi bạn sniff mà sau này) và có lẽ bạn đang làm nó sai. Tuy nhiên, nếu bạn có một cái gì đó như ARAN_COMBO 0xBA là, sau đó nó có thể là hợp lý. Có nhiều cách để xác minh nếu nó là chính xác và điều này sẽ được đi sâu hơn trong Ở phần cấu trúc packet của hướng dẫn này.
Để đặt tên một opcode, kích chuột phải vào phần đặt tên của dòng gói tin. Sau đó nhập tên thường xuyên. Hãy chắc chắn rằng các tên mà bạn cung cấp cho các opcode là liên quan đến opcode. Nếu không thì rắc rối sẽ xảy ra.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
tiếp tục về Analyzing Packet Logs :
Vì vậy, bạn đã tìm thấy các opcode GENERAL_CHAT. Đây là một bước rất quan trọng. Để làm cho dễ dàng hơn cho chính mình, tại bất kỳ released packet GENERAL_CHAT, kích chuột phải vào nó và đặt tên nó là GENERAL_CHAT (recv). Những điều tốt về MapleShark là nó có thể tìm kiếm cho các Packet bạn đã đăng nhập dựa vào opcode. Không ai muốn đọc thông qua một danh sách các số hexidecimal như 0x37 Tour quốc tế, do đó đặt tên nó một cái gì đó bằng tiếng Anh sẽ giúp. Sau này được thực hiện, di chuyển xuống các Packet tiếp theo. Hãy nhớ chúng tôi chỉ cập nhật trò chuyện, và chúng tôi đã không cập nhật những gì chúng tôi đã cố gắng để cập nhật, đó là chức năng của những gì bạn nói. Trong khi thực hiện cập nhật, đôi khi tôi thả mesos đầu tiên. Bây giờ là lúc để sử dụng bộ não của bạn. Tìm các opcode cũ để thả mesos. Bắt đầu trong xử lý Recv. Bây giờ câu hỏi là làm thế nào tôi biết nó đã được nhận? Có hai lý do. Một, kinh nghiệm, và tôi biết rằng nó đang nhận được, và nó sẽ gửi một Released Packet DROP_ITEM_FROM_MAPOBJECT. Thứ hai, suy nghĩ lại và nhớ những người khai thác trên GMS về lừa mesos. Cũng suy nghĩ về lại hack trong các phiên bản cũ thông qua Packet chỉnh sửa các giá trị tiêu cực. Chỉnh sửa Packet được thực hiện hoàn toàn nhận được xử lý kể từ khi khách hàng gửi một Packet tùy chỉnh mà sẽ được nhận bởi máy chủ. Dù sao bây giờ bạn có opcode Packet dữ liệu từ phiên bản cũ, hãy nhớ rằng hầu hết của opcodes thời gian đi, nhưng không phải ở một tốc độ điên. Trong v88, nó là 0x5E. Bây giờ tìm kiếm cho các Released Packet rằng xung quanh xung quanh khu vực và ngoài nước. Nếu bạn cần thêm trợ giúp, nhìn vào các mesodrophandler, và tìm ra chiều dài Packet dữ liệu sẽ được xung quanh (sâu sắc hơn trong việc phân tích cấu trúc Released Packet). Do đây là không được, bạn sẽ không biết chiều dài chính xác từ v88, nhưng suy nghĩ về nó. Rất nhiều dữ liệu cần phải được truyền cho thả mesos? Có lẽ là không. Số trung là cần thiết, có thể những gì bỏ nó vấn đề, và có thể khi nó giảm vấn đề, và thậm chí có lẽ vị trí thả. Điều này có nghĩa là các Released Packet sẽ không được insanely dài. Vì vậy, nhìn xung quanh cho một Released Packet ngắn.
Khi bạn tìm thấy một Packet phong nha kích thước xung quanh opcode cũ, thời gian để kiểm tra xem nó là chính xác. Đây là nơi ghi nhớ bao nhiêu bạn giảm đi. Kéo con chuột của bạn và làm nổi bật 4 byte liên tiếp trong Released Packet. Bạn có thể làm nổi bật nó ở dưới cùng của giao diện và các số nguyên được cung cấp sẽ được calcuated vào thập phân ở phía bên tay phải của giao diện. Nếu điều đó không phù hợp với số tiền của mesos bạn giảm, tiếp tục đi. Tiếp tục đi cho đến khi kết thúc và nếu không có các ints khớp với số lượng của mesos bạn bỏ, bạn có các Packet dữ liệu sai. Câu hỏi đặt ra là làm thế nào là một int. Có 2 cách tôi biết nó là một int. Một, thông qua kinh nghiệm và thứ hai thông qua xem xét xử lý Released Packet (thông tin thêm tới). Dù sao sau một vài thử nghiệm, opcode trung thả nên được tìm thấy là 0x69 cho v99. Thay thế một tuổi với một trong những điều này. Opcode cũ 0x5E, 0x69, 0x5E = 11 để thêm một thẻ 11 bên cạnh nó. Bây giờ là lúc để kiểm tra các Released Packet gửi. Bởi vì bạn biết các opcode receive MESO_DROP, xử lý tương ứng với nó.
Rõ ràng nó là MesoDropHandler, nhưng nếu opcode được đặt tên là xấu, có phải là một cách khác để xử lý. Cách hoàn hảo để làm điều đó là thông qua tìm kiếm một IDE. Tôi sẽ giả định Netbeans ở đây, nhưng những người sử dụng Eclipse có một tính năng rất giống nhau. Nhấp chuột phải vào MESO_DROP gọi là biến và chọn tùy chọn tìm thấy tập quán. Trong Eclipse, nó là tương tự. Chọn lựa chọn mặc định và nó sẽ tìm thấy bạn tập quán của biến. Nhấp đúp chuột vào các dòng mã có sử dụng nó. Điều này sẽ đưa bạn đến PacketProcessor.java (trong odinms) và bên cạnh dòng của mã này sẽ là tên của tập tin. Nhấn Ctrl, và sau đó nhấp chuột vào tên của tập tin. Điều này sẽ đưa bạn thẳng đến tập tin (IDE phím tắt). Trong xử lý, đôi khi sẽ có một c.getSession () viết (MaplePacketCreator.stuff);. Dòng mã. Điều này cho máy chủ những gì Released Packet gửi lại cho người chơi. Trong một số xử lý, nhiều hơn một trong số này sẽ được sử dụng và những người khác, sẽ không có một Released Packet gửi ở tất cả. Đây là nơi đang đọc cần phải diễn ra. Hãy nhớ những gì bạn đã làm và điều hướng đến phần chính xác của mã. Tìm các Released Packet mà máy chủ gửi (nếu có) và phương pháp đó (giữ phím điều khiển và bấm vào phương pháp). Phương pháp này sẽ là một cái gì đó giống như công cộng tĩnh MaplePacket blah () {MaplePacketLittleEndianWriter mplew = thứ; mplew.writeShort (<OPCODE đây>); * đang bỏ qua * /}. Tìm opcode đây> <OPCODE. Trong trường hợp của trung rơi, nó sẽ là DROP_ITEM_FROM_MAPOBJECT. Trở lại nơi opcodes gửi và được opcode cũ cho DROP_ITEM_FROM_MAPOBJECT.
Bây giờ trở lại MapleShark và tìm thấy các Released Packet gửi đi sau khi MESO_DROP. Nếu opcode Packet là hợp lý gần một tuổi, điều này có thể là các Released Packet chính xác (được xác nhận sau này). Để bây giờ thay thế các opcode cũ (v88 = 0x10C) với người mới mà bạn đã tìm thấy. Tính toán sự khác biệt và làm cho lưu ý của nó để kiểm tra trong tương lai. Thủ tục này cần phải được tiếp tục cho tất cả mọi thứ bạn đã đánh hơi. Nếu bạn quá lười biếng, nhưng đây là lần đầu tiên bạn làm điều này, sau đó dừng lại ngay bây giờ. Nó không phải là giá trị tiếp tục như thế này là một trong những phần dễ dàng hơn và một phần thực sự có số tiền ít nhất công việc. Cập nhật là không cho người yếu.
Một ý tưởng chung về kiểm tra các Released Packet.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Đoán Opcodes (ví dụ lý thuyết):
Bây giờ sau khi một kích thước tốt opcodes được cập nhật theo cách này tẻ nhạt, một vài thủ đoạn khác có thể được sử dụng. Điều quan trọng nhất là đoán opcodes. Đây là nơi thêm tăng Packet dữ liệu và giảm như +11 trong trung rơi. Thật không may, tôi đã không làm điều này trong v99 vì vậy tôi không thể hiển thị bất kỳ ví dụ rõ ràng, nhưng tôi sẽ hiển thị một ví dụ ở đây là hoàn toàn lý thuyết.
Opcodes của bạn giống như thế:
ACTION_1 = 0x50 / / +4
ACTION_2 =?
ACTION_3 =?
ACTION_4 = 0x53 / / +4
Bây giờ một cách hợp lý action_2 và action_3 là 0x51 và 0x52. Tất nhiên chúng tôi không biết chắc chắn (những người hiểu biết, Nexon có thể đã gỡ bỏ ACTION_2 và bổ sung thêm một opcode hoàn toàn mới ở giữa), nhưng nó là một đoán tốt.
Dưới đây là một ví dụ điển hình tiên tiến hơn để đoán. Đây là những gì bạn sẽ được nhìn thấy hầu hết các phần
ACTION_1 = 0x78 / / +8, là 0x70
ACTION_2 =? / / 0x75
ACTION_3 = 0x8F / / +8
Vì vậy, từ ACTION_1 và ACTION_3, opcodes tăng một giá trị 8. Nó là một đoán rằng tất cả các opcodes giữa cũng tăng 8. Điều này đã làm việc khoảng 95% (ước tính thấp) cho tôi. ACTION_2 có thể được tìm thấy như 0x75 +8 = 0x7D. Thấy, đây là lý do tại sao tài liệu tăng opcode là hữu ích. Mặc dù tôi không mã mỗi phiên bản, tôi tiếp tục một opcode cập nhật nhiều phiên bản, và tôi làm điều này khá thường xuyên.
Bổ sung Lời khuyên:
Bởi vì chiến lược đoán, opcodes có thể dễ dàng được lấp đầy lên khá nhanh. Có một số cách để làm cho cuộc sống của bạn dễ dàng hơn. Thứ nhất, không ngửi tất cả mọi thứ trong cùng một khu vực. Đúng, bạn có thể nhận được các opcodes hoàn toàn hoàn hảo trong phần đó, nhưng thường thì bạn có thể đoán những người. Lan truyền các released packet sniff trong suốt danh sách opcodes. Có thể sniff MESO_DROP, sau đó sniff đi vào cửa hàng tiền mặt, sau đó có lẽ theo dõi một số hành động MTS.
Đôi khi đoán một cách chắc chắn là không hoàn toàn là đủ và bạn có được một cái gì đó như
ACTION_1 = 0x55 / / +4, là 0x51
ACTION_2 =? / / 0x52
ACTION_3 = 0x65 / / +5 là 0x60
Đối với những ví dụ, nhìn vào những gì các hành động. Nếu action_1 là di chuyển, và action_2 giống như di chuyển nâng cao, và action_3 là cái gì để làm với các chuyển động, sau đó nó có nhiều khả năng cho ACTION_2 để có được các 4 hơn 5. Một cách khác để biết điều này là 0x52 là 0x51 (nhìn vào giá trị cũ).
Tóm tắt Opcodes:
1. Sniff các opcodes dễ dàng, nhưng với hiệu quả và rõ ràng.
2. Cập nhật các opcodes dễ dàng, đi từ recv gửi nếu bạn không có kinh nghiệm mặc dù điều này không thực sự quan trọng
3. Guess các opcodes rằng bạn có thể guess chắc chắn cao.
4. Go back và sniff những ones đang mất tích và lặp lại # 2-3 cho đến khi một danh sách tốt được thực hiện để gửi và nhận các released packet.
CÁCH UPDATE VESION MAPLESTORY
Nếu bạn không muốn đọc văn bản dài , Thì Cái hướng dẫn này không phải dành cho bạn nhé. Nếu bạn quá lười biếng để đọc điều này và bạn không có sự kiên nhẫn và thực sự bạn nên Dừng lại ở đây được rồi!:-?
Giới thiệu chung:
Cập nhật cần có thời gian và kiến thức chung của game này. Một số người có thể sáng tạo là tốt. Một vài điều cơ bản phải được biết trước nếu có ai quan tâm đến việc cập nhật phiên bản . Đây là những định nghĩa rất cơ bản và không có điều này, nó là khá vô dụng để tiến hành và hơn nữa. Tôi sẽ cung cấp cho bạn một cách hiệu quả để sniff packet và cập nhật có thể là một vài thủ thuật để tiết kiệm thời gian, nhưng nó vẫn còn đến để tìm hiểu những logic đằng sau Update. Tôi cũng giả định này được cập nhật cho Source OdinMS nhưng các khái niệm tương tự có thể được áp dụng cho Vana và DelphiMS. Tôi đã không bao giờ dùng Titan hoặc C # source vì vậy tôi không thể nói như vậy, nhưng các packet tương tự cho các trò chơi khác. Tôi cũng sẽ sử dụng v88 và v99 như tôi quen thuộc nhất với v88 và GMS tại v99. Tuy nhiên, nếu bạn muốn cập nhật MSEA, hướng dẫn này vẫn có tác dụng với nó. Tôi cũng chắc chắn rằng tài liệu hướng dẫn này hoạt động cho cả hai source odinms bằng cách sử dụng các properties của tập tin và những inbound và outbound.
Packet là gì?
Nếu bạn thực sự muốn chạy một Sever thành công với sự cạnh tranh không, update vesion mới nhất là quan trọng vì nó không được cạnh tranh và luôn được ưa thích. Bây giờ bạn hỏi tôi lý do tại sao tôi đã không làm điều này cho MoongraMS(theo Flav(bên Ragezone),nói "I don't know how to"). Tôi chỉ đơn giản là không có thời gian và sức lực (mệt mõi chẳng hạn) cho các công cụ này nữa mặc dù tôi đã thực hiện nó trước đây, tôi không có động lực hoặc thời gian để làm điều đó nữa. Nếu bạn đang đi "nhằm mục đích cho # 1" bạn sẽ có để theo kịp với sự cạnh tranh đang diễn ra. Thật đấy, các tính năng tùy chỉnh và trang web là "gần như là quan trọng" như các server riêng của mình, nhưng đây là cách dễ nhất để có được version một cách nhanh chóng và không được banned như là một máy chủ khủng khiếp là chỉ đầu vì tỷ lệ người chơi.
Các định nghĩa và thông tin cơ bản:
-Byte: 1 byte
-Short: 2 byte
-Int: 4 byte
-Long: 8 byte
-Các gói dữ liệu trên MapleStory là ở định dạng về cuối nhỏ, có nghĩa là một lần chuyển đổi để hex, họ được đảo ngược. Điều này có nghĩa rằng nếu một cái gì đó là 0x12345678, một lần chuyển đổi về cuối nhỏ, nó sẽ là 78 56 34 12.
-Các gói tin được gửi đi giữa các máy chủ và client để truyền dữ liệu và thông tin. GUI là một phóng chiếu của nó, trong một cách.
-Hoạt động được xử lý bởi các gói tin trên MapleStory được định nghĩa bởi một đoạn ngắn (2 bytes) vào đầu của gói tin. Một số hành động có thể chia sẻ cùng một ngắn. Chúng ta gọi nó là Opcode. Cả hai gói tin gửi đi và nhận được bởi các máy chủ có opcodes. Cách đặt tên các opcodes này sẽ giúp rất nhiều.
-Điều này sẽ được thực hiện trong hệ thập lục phân, do đó, nó là cơ sở 16. Nó rất hữu ích để có máy tính cho hex đến tháng mười hai và tháng mười hai để hex tại đã sẵn sàng. Nó cũng hữu ích để biết một số vấn đề cơ bản chẳng hạn như 0xA = 10, 0xB = 11, và có thể một số bội số của 16. Nó rất hữu ích cũng biết làm thế nào để nhân và thêm vào trong đầu của bạn. Vì tôi có thể làm điều đó, cho tất cả các byte tôi có thể tính toán các giá trị khá nhanh bằng cách thực hiện nó trong đầu của tôi.
-Handlers cho các nhận các gói tin. MaplePacketCreator là cho các gói tin gửi.
Thông tin khác về Misc:
-Levels, item slots are bytes
-Jobs, stats are shorts
-Mesos, exp, map id are ints
-Buffstats are saved into longs
Cập nhật Opcodes:
Giới thiệu
Cập nhật opcodes là bước đầu tiên để cập nhật phiên bản từ một đến khác. Bước này có hoặc rất nhiều thời gian, hoặc một chút thời gian và logic.
Điều đầu tiên cần biết là để biết về những điều phổ biến là nói không với Nexon. Điều quan trọng nhất là biết rằng Nexon thường giữ các các opcodes giữa các phiên bản. Đây không phải là luôn luôn đúng như một số opcodes di chuyển xung quanh trong một số phiên bản, nhưng hầu hết các phần, hầu hết các opcodes ở lại. Kiến thức về những gì được thêm vào và gỡ bỏ phần nào quan trọng là tốt. Ví dụ trong v88 có cuốn sách quái vật, nhưng do bản Big Bang đã được gỡ bỏ. Có thể rằng các opcodes đã được gỡ bỏ là tốt, gây ra các giá trị của opcodes đi xuống.
Làm thế nào để làm việc một Packet Sniffer:
Sau khi biết điều này, đó là thời gian để đi và lấy một số gói dữ liệu từ các trò chơi. Cá nhân tôi ủng hộ SnowSniffer chỉ vì bản in ASCII, nhưng tôi hiện đang sử dụng MapleShark và sẽ được viết một tài liệu hướng dẫn về nó.Cho phép google và chỉ cần tìm phiên bản mới nhất, mà đã có bản mapleshark 1013. Nếu bạn không có .net framework,và MapleShark cần nó để chạy. Tải về và cài đặt winpcap (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>) trong khi bạn đang ở đó vì đây là cần thiết cho sniffing packet.
Tôi đã nhận được một số câu hỏi trên MapleShark không làm việc cho một vài người, vì vậy tôi cũng sẽ bao gồm một hướng dẫn nhỏ. Mở file thực thi và thiết lập các thiết lập. Nếu mạng của bạn là không dây, chọnwireless. Nếu mạng bạn là ethernet, sử dụng local area connection khi được yêu cầu cho nó. Đôi khi bạn phải chọn tùy chọn số 2 của bộ phận này.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
MapleShark cũng yêu cầu bạn cho các port mà bạn muốn sniff. Đặt ra các từ 7575-8888. Các cổng không đạt đến 8888, nhưng sử dụng 8888 cho việc đơn giản. Khi bạn mở cổng này, bạn có thể thay đổi kênh hoặc đăng nhập vào trò chơi và các gói dữ liệu sẽ bắt đầu được đăng nhập.
|-) mệt quá nhỉ
Làm thế nào để Sniff packet một cách hiệu quả:
sniffing packet tốt không chỉ suy nghĩ ít di chuyển xung quanh và đào tạo về quái vật, trái với niềm tin phổ biến do các released packets phát hành. Không, những gói dữ liệu là khá vô dụng và được nhiều người cám ơn họ. Khi bạn sniff packet, bạn cần có được những gì bạn muốn, một cách nhanh chóng và rõ ràng. Để sniff packet một cách hiệu quả, thực hiện một chức năng tại một thời điểm. Xem xét thông qua các released packet nhận được và gửi các released packet và tìm những người bạn muốn Sniff. Phần quan trọng nhất là để nói những gì bạn muốn sniff trước khi sniff các hành động chính xác. Ví dụ nếu bạn muốnsniff meso và drop, không chỉ cần thả mesos và di chuyển, nói thả mesos và sau đó thả mesos. Cũng biết bao nhiêu mesos bạn giảm xuống. Nói một cái gì đó giống như thả 256 mesos là tốt hơn so với nói rằng thả mesos. Tuy nhiên, nếu bạn nói rằng bạn đang giảm 256 mesos, bạn tốt hơn thả 256 mesos. Nếu không, bạn sẽ bị nhầm lẫn. Điều này sẽ hữu ích sau khi bạn nhìn vào đăng nhập của bạn. một khi bạn có một đăng nhập khá lớn với nhiều điế sniff, bạn có thể ngừng sniff. Nếu đây là lần đầu tiên của bạn update và bạn có ít kinh nghiệm, sau đó xem và nghiên cứu một loạt các thứ để bạn có thể điền vào các opcodes không rõ sau này.
Phân tích các bản ghi packet và update Opcode đầu tiên:
Bây giờ bạn có các bản ghi packet dữ liệu, đăng nhập vào MapleStory. Bạn không muốn các packet dữ liệu tới nhiều hơn nữa. Bây giờ trở lại giao diện MapleShark và di chuyển xuống mỗi released packet được đăng nhập. Các released packet nhận được bởi máy chủ sẽ được ra bên ngoài, và các released packet gửi đi bởi các máy chủ sẽ được gửi đến. Tên truy cập trực giác, nhưng nếu bạn nghĩ về nó theo cách khác xung quanh bằng cách thay thế máy chủ với client, sau đó nó sẽ có ý nghĩa (nhận của client = inbound). Opcode được cho ở bên cạnh cùng với chiều dài packet. Điều này sẽ hữu ích sau này. Bây giờ là thời gian để tìm thấy khi bạn nói chuyện. Di chuyển xuống mỗi gói tin cho đến khi bạn tìm thấy nơi bạn đã nói chuyện. Các hộp văn bản phía dưới bên phải của MapleShark cung cấp cho bạn một bản in ASCII.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Nói một cách cơ bản, di chuyển xuống cho đến khi bạn thấy những gì bạn nói trong văn bản đơn giản. Nếu nó đi, sau đó released packet đó sẽ được nhận các released packet. Lấy opcode mà MapleShark nói rằng đó là chính xác.Version v88 là 0x31. Version v99 là 0x37. Điều hướng đến các tập tin mà các gói tin receive được lưu trữ. Lấy giá trị cũ của GENERAL_CHAT và thay đổi điều đó với giá trị mới. Ví dụ: v88 là 0x31, v99 = 0x37. Thay đổi 0x31 đến 0x37. Kể từ 0x37-0x31 = 6, lưu ý rằng nó là 6. Điều này sẽ có ích sau này. Nếu bạn có kinh nghiệm hoặc rất tốt tại toán học Cao, bạn có thể bỏ qua bước này. Bạn đã cập nhật opcode đầu tiên của bạn. Tiếp theo quay trở lại MapleShark và xem xét các released packet gửi đến có chứa những từ bạn đã nói. Đây cũng là GENERAL_CHAT, nhưng trong gửi opcodes. Tới nơi opcodes của bạn được lưu trữ và thay đổi điều đó cho CHATTEXT là tốt. Trong v88 là 0xA2. Trong 0x99 là 0xAF.
Opcode Cách đặt tên:
Bây giờ bạn có thể suy nghĩ, làm thế nào tôi biết đó là CHATTEXT và GENERAL_CHAT để gửi và nhận các released packet tương ứng? Có lẽ bạn có thể nghĩ, làm thế nào bạn sẽ biết những gì các tên gói là phải tắt file .bat không? Không có đơn giản câu trả lời cho điều này. Tôi chỉ biết bởi vì tôi đã làm điều này nhiều lần. Mặc dù các packet này không bị đặt tên, một số là một chút bối rối. Ví dụ, trong mã source của tôi Tôi có ARAN_COMBO cho nhận được gói tin, nhưng xử lý được đặt tên là DamageMonsterHandler cho một số lý do ngu ngốc. Thông thường để tìm ra điều này lần đầu tiên có thể mất một lúc. Dưới đây là một số lời khuyên hữu ích: Hãy nhớ rằng các packet opcodes ở lại để cho hầu hết các phần. Trong v88, ARAN_COMBO đến trước khi CS_OPERATION(cash shop). Nếu bạn có một cái gì đó như ARAN_COMBO và nó là 0x9999, sau đó nó là cách quá cao vì nó lớn hơn giá trị của cash shop(khi bạn sniff mà sau này) và có lẽ bạn đang làm nó sai. Tuy nhiên, nếu bạn có một cái gì đó như ARAN_COMBO 0xBA là, sau đó nó có thể là hợp lý. Có nhiều cách để xác minh nếu nó là chính xác và điều này sẽ được đi sâu hơn trong Ở phần cấu trúc packet của hướng dẫn này.
Để đặt tên một opcode, kích chuột phải vào phần đặt tên của dòng gói tin. Sau đó nhập tên thường xuyên. Hãy chắc chắn rằng các tên mà bạn cung cấp cho các opcode là liên quan đến opcode. Nếu không thì rắc rối sẽ xảy ra.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
tiếp tục về Analyzing Packet Logs :
Vì vậy, bạn đã tìm thấy các opcode GENERAL_CHAT. Đây là một bước rất quan trọng. Để làm cho dễ dàng hơn cho chính mình, tại bất kỳ released packet GENERAL_CHAT, kích chuột phải vào nó và đặt tên nó là GENERAL_CHAT (recv). Những điều tốt về MapleShark là nó có thể tìm kiếm cho các Packet bạn đã đăng nhập dựa vào opcode. Không ai muốn đọc thông qua một danh sách các số hexidecimal như 0x37 Tour quốc tế, do đó đặt tên nó một cái gì đó bằng tiếng Anh sẽ giúp. Sau này được thực hiện, di chuyển xuống các Packet tiếp theo. Hãy nhớ chúng tôi chỉ cập nhật trò chuyện, và chúng tôi đã không cập nhật những gì chúng tôi đã cố gắng để cập nhật, đó là chức năng của những gì bạn nói. Trong khi thực hiện cập nhật, đôi khi tôi thả mesos đầu tiên. Bây giờ là lúc để sử dụng bộ não của bạn. Tìm các opcode cũ để thả mesos. Bắt đầu trong xử lý Recv. Bây giờ câu hỏi là làm thế nào tôi biết nó đã được nhận? Có hai lý do. Một, kinh nghiệm, và tôi biết rằng nó đang nhận được, và nó sẽ gửi một Released Packet DROP_ITEM_FROM_MAPOBJECT. Thứ hai, suy nghĩ lại và nhớ những người khai thác trên GMS về lừa mesos. Cũng suy nghĩ về lại hack trong các phiên bản cũ thông qua Packet chỉnh sửa các giá trị tiêu cực. Chỉnh sửa Packet được thực hiện hoàn toàn nhận được xử lý kể từ khi khách hàng gửi một Packet tùy chỉnh mà sẽ được nhận bởi máy chủ. Dù sao bây giờ bạn có opcode Packet dữ liệu từ phiên bản cũ, hãy nhớ rằng hầu hết của opcodes thời gian đi, nhưng không phải ở một tốc độ điên. Trong v88, nó là 0x5E. Bây giờ tìm kiếm cho các Released Packet rằng xung quanh xung quanh khu vực và ngoài nước. Nếu bạn cần thêm trợ giúp, nhìn vào các mesodrophandler, và tìm ra chiều dài Packet dữ liệu sẽ được xung quanh (sâu sắc hơn trong việc phân tích cấu trúc Released Packet). Do đây là không được, bạn sẽ không biết chiều dài chính xác từ v88, nhưng suy nghĩ về nó. Rất nhiều dữ liệu cần phải được truyền cho thả mesos? Có lẽ là không. Số trung là cần thiết, có thể những gì bỏ nó vấn đề, và có thể khi nó giảm vấn đề, và thậm chí có lẽ vị trí thả. Điều này có nghĩa là các Released Packet sẽ không được insanely dài. Vì vậy, nhìn xung quanh cho một Released Packet ngắn.
Khi bạn tìm thấy một Packet phong nha kích thước xung quanh opcode cũ, thời gian để kiểm tra xem nó là chính xác. Đây là nơi ghi nhớ bao nhiêu bạn giảm đi. Kéo con chuột của bạn và làm nổi bật 4 byte liên tiếp trong Released Packet. Bạn có thể làm nổi bật nó ở dưới cùng của giao diện và các số nguyên được cung cấp sẽ được calcuated vào thập phân ở phía bên tay phải của giao diện. Nếu điều đó không phù hợp với số tiền của mesos bạn giảm, tiếp tục đi. Tiếp tục đi cho đến khi kết thúc và nếu không có các ints khớp với số lượng của mesos bạn bỏ, bạn có các Packet dữ liệu sai. Câu hỏi đặt ra là làm thế nào là một int. Có 2 cách tôi biết nó là một int. Một, thông qua kinh nghiệm và thứ hai thông qua xem xét xử lý Released Packet (thông tin thêm tới). Dù sao sau một vài thử nghiệm, opcode trung thả nên được tìm thấy là 0x69 cho v99. Thay thế một tuổi với một trong những điều này. Opcode cũ 0x5E, 0x69, 0x5E = 11 để thêm một thẻ 11 bên cạnh nó. Bây giờ là lúc để kiểm tra các Released Packet gửi. Bởi vì bạn biết các opcode receive MESO_DROP, xử lý tương ứng với nó.
Rõ ràng nó là MesoDropHandler, nhưng nếu opcode được đặt tên là xấu, có phải là một cách khác để xử lý. Cách hoàn hảo để làm điều đó là thông qua tìm kiếm một IDE. Tôi sẽ giả định Netbeans ở đây, nhưng những người sử dụng Eclipse có một tính năng rất giống nhau. Nhấp chuột phải vào MESO_DROP gọi là biến và chọn tùy chọn tìm thấy tập quán. Trong Eclipse, nó là tương tự. Chọn lựa chọn mặc định và nó sẽ tìm thấy bạn tập quán của biến. Nhấp đúp chuột vào các dòng mã có sử dụng nó. Điều này sẽ đưa bạn đến PacketProcessor.java (trong odinms) và bên cạnh dòng của mã này sẽ là tên của tập tin. Nhấn Ctrl, và sau đó nhấp chuột vào tên của tập tin. Điều này sẽ đưa bạn thẳng đến tập tin (IDE phím tắt). Trong xử lý, đôi khi sẽ có một c.getSession () viết (MaplePacketCreator.stuff);. Dòng mã. Điều này cho máy chủ những gì Released Packet gửi lại cho người chơi. Trong một số xử lý, nhiều hơn một trong số này sẽ được sử dụng và những người khác, sẽ không có một Released Packet gửi ở tất cả. Đây là nơi đang đọc cần phải diễn ra. Hãy nhớ những gì bạn đã làm và điều hướng đến phần chính xác của mã. Tìm các Released Packet mà máy chủ gửi (nếu có) và phương pháp đó (giữ phím điều khiển và bấm vào phương pháp). Phương pháp này sẽ là một cái gì đó giống như công cộng tĩnh MaplePacket blah () {MaplePacketLittleEndianWriter mplew = thứ; mplew.writeShort (<OPCODE đây>); * đang bỏ qua * /}. Tìm opcode đây> <OPCODE. Trong trường hợp của trung rơi, nó sẽ là DROP_ITEM_FROM_MAPOBJECT. Trở lại nơi opcodes gửi và được opcode cũ cho DROP_ITEM_FROM_MAPOBJECT.
Bây giờ trở lại MapleShark và tìm thấy các Released Packet gửi đi sau khi MESO_DROP. Nếu opcode Packet là hợp lý gần một tuổi, điều này có thể là các Released Packet chính xác (được xác nhận sau này). Để bây giờ thay thế các opcode cũ (v88 = 0x10C) với người mới mà bạn đã tìm thấy. Tính toán sự khác biệt và làm cho lưu ý của nó để kiểm tra trong tương lai. Thủ tục này cần phải được tiếp tục cho tất cả mọi thứ bạn đã đánh hơi. Nếu bạn quá lười biếng, nhưng đây là lần đầu tiên bạn làm điều này, sau đó dừng lại ngay bây giờ. Nó không phải là giá trị tiếp tục như thế này là một trong những phần dễ dàng hơn và một phần thực sự có số tiền ít nhất công việc. Cập nhật là không cho người yếu.
Một ý tưởng chung về kiểm tra các Released Packet.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Đoán Opcodes (ví dụ lý thuyết):
Bây giờ sau khi một kích thước tốt opcodes được cập nhật theo cách này tẻ nhạt, một vài thủ đoạn khác có thể được sử dụng. Điều quan trọng nhất là đoán opcodes. Đây là nơi thêm tăng Packet dữ liệu và giảm như +11 trong trung rơi. Thật không may, tôi đã không làm điều này trong v99 vì vậy tôi không thể hiển thị bất kỳ ví dụ rõ ràng, nhưng tôi sẽ hiển thị một ví dụ ở đây là hoàn toàn lý thuyết.
Opcodes của bạn giống như thế:
ACTION_1 = 0x50 / / +4
ACTION_2 =?
ACTION_3 =?
ACTION_4 = 0x53 / / +4
Bây giờ một cách hợp lý action_2 và action_3 là 0x51 và 0x52. Tất nhiên chúng tôi không biết chắc chắn (những người hiểu biết, Nexon có thể đã gỡ bỏ ACTION_2 và bổ sung thêm một opcode hoàn toàn mới ở giữa), nhưng nó là một đoán tốt.
Dưới đây là một ví dụ điển hình tiên tiến hơn để đoán. Đây là những gì bạn sẽ được nhìn thấy hầu hết các phần
ACTION_1 = 0x78 / / +8, là 0x70
ACTION_2 =? / / 0x75
ACTION_3 = 0x8F / / +8
Vì vậy, từ ACTION_1 và ACTION_3, opcodes tăng một giá trị 8. Nó là một đoán rằng tất cả các opcodes giữa cũng tăng 8. Điều này đã làm việc khoảng 95% (ước tính thấp) cho tôi. ACTION_2 có thể được tìm thấy như 0x75 +8 = 0x7D. Thấy, đây là lý do tại sao tài liệu tăng opcode là hữu ích. Mặc dù tôi không mã mỗi phiên bản, tôi tiếp tục một opcode cập nhật nhiều phiên bản, và tôi làm điều này khá thường xuyên.
Bổ sung Lời khuyên:
Bởi vì chiến lược đoán, opcodes có thể dễ dàng được lấp đầy lên khá nhanh. Có một số cách để làm cho cuộc sống của bạn dễ dàng hơn. Thứ nhất, không ngửi tất cả mọi thứ trong cùng một khu vực. Đúng, bạn có thể nhận được các opcodes hoàn toàn hoàn hảo trong phần đó, nhưng thường thì bạn có thể đoán những người. Lan truyền các released packet sniff trong suốt danh sách opcodes. Có thể sniff MESO_DROP, sau đó sniff đi vào cửa hàng tiền mặt, sau đó có lẽ theo dõi một số hành động MTS.
Đôi khi đoán một cách chắc chắn là không hoàn toàn là đủ và bạn có được một cái gì đó như
ACTION_1 = 0x55 / / +4, là 0x51
ACTION_2 =? / / 0x52
ACTION_3 = 0x65 / / +5 là 0x60
Đối với những ví dụ, nhìn vào những gì các hành động. Nếu action_1 là di chuyển, và action_2 giống như di chuyển nâng cao, và action_3 là cái gì để làm với các chuyển động, sau đó nó có nhiều khả năng cho ACTION_2 để có được các 4 hơn 5. Một cách khác để biết điều này là 0x52 là 0x51 (nhìn vào giá trị cũ).
Tóm tắt Opcodes:
1. Sniff các opcodes dễ dàng, nhưng với hiệu quả và rõ ràng.
2. Cập nhật các opcodes dễ dàng, đi từ recv gửi nếu bạn không có kinh nghiệm mặc dù điều này không thực sự quan trọng
3. Guess các opcodes rằng bạn có thể guess chắc chắn cao.
4. Go back và sniff những ones đang mất tích và lặp lại # 2-3 cho đến khi một danh sách tốt được thực hiện để gửi và nhận các released packet.