Here is a list of packet opcodes, and addrs of packet constructors (for sending) or parsers (for received), dumped from the executable.
It's a pretty simple task tho (there are even plain function names in the kr2100 call table), dont know if someone had done this already.
The recv list (recv-kr2100.txt) looks like this:
Code:
....
0C9F:TrGetCreateUserInformationToAuthenticServerAck
0CA1:TrLoginUserToAuthenticServerAck
0CA4:TrRegisterNickNameToAuthenticServerAck
0CA6:TrGetWorldInformationsAck
0CA7:TrChangeServerBusyStateAcks
0CA2:TrLoginUserToAuthenticServerNak
0C9B:TrFixedChargeAck
1335:TrChangeNameAck
0CAA:TrMyRoleListAck
....
You have to look up the call table to get its parser function,
take [1335:TrChangeNameAck] for example, search hex 35-13 in the recv-kr2100\14xxxx-call[xxx].bin, you will get:

The call table struct is:
Code:
{
&vtable[]; //8byte x64
word OpC;
word someflags[6];
wchar_t namew[81];
char name[88];
} //0x110
So locate 14190f838 (the vtable) in the exe, the first member of the vtable is the parser function:

All parser funcs has a unified form, which is XXXXX::process(ActorRoot*,u8* packet_content,u16 packet_len).
The send list looks like this:
Code:
....
eTrListSiegeGuildReq -> 1406E421F
eTrGuildAliianceInfomationReq -> 1406E4770
eTrGuildWebInfoByGuildNameReq -> 1406E539B
eTrGetInstallationListReq -> 1406F28AE
eTrMoveInstallationReq -> 1406F4CC4
eTrVisitableHouseListReq -> 1406F549A
....
you have to find the opcode yourself,
take [eTrGetInstallationListReq -> 1406F28AE] for example, look the code around 1406F28AE, you will get:
So 10A7 is the opcode for eTrGetInstallationListReq, the whole 1406F2750 func (before 1406F28AE) is the constructor (packets for sending constructed in stacks).
The send constructor names in 2179 are obfuscated, some can be guessed by its lua call.
Since my interest is to hook these functions internally and make bdo completely offline,not so sure how these works on server/emus (the AES (content) and RABBIT (whole packet) cipher algo can be found in Taiga's code).
Some like @
Kirito2105 may have already utilized the information from client executable (but seems he's still trying to jewing rubles with this dying mmo...).
And if someone know those xxxxReq, xxxxAck, xxxxAcks, xxxxNak actual means and how these translate to emu's SMxxxx, CMxxxx naming rules, please tell me.