Regarding reversal, here's how you get player names in Multiplayer version of Napoleonic Wars.
Inside Agent class, there is player_name_id value at offset 0x38
char* GetName()
{
return *(char**)((dwPlayerNameID*0x10210)+0xDE8E50);//0xDE8E4C without + 4 needed to satisfy M&B String struct
}