diff --git a/idaplugins/ffnetwork.py b/idaplugins/ffnetwork.py index d94a275..c3bbd6c 100644 --- a/idaplugins/ffnetwork.py +++ b/idaplugins/ffnetwork.py @@ -4,211 +4,211 @@ import ida_bytes import ida_search packet_names = { - 2: 'Ping', - 3: 'Init', - 8: 'Logout', - 11: 'CFCancel', - 13: 'CFDutyInfo', - 14: 'CFNotify', - 18: 'CFPreferredRole', - 81: 'CrossWorldLinkshellList', - 89: 'FellowshipList', - 111: 'Playtime', - 112: 'CFRegistered', - 115: 'Chat', - 121: 'RSVData', - 122: 'RSFData', - 123: 'SocialMessage', - 124: 'SocialMessage2', - 126: 'SocialList', - 127: 'SocialRequestResponse', - 128: 'ExamineSearchInfo', - 129: 'UpdateSearchInfo', - 130: 'InitSearchInfo', - 131: 'ExamineSearchComment', - 134: 'ServerNoticeShort', - 135: 'ServerNotice', - 136: 'SetOnlineStatus', - 137: 'LogMessage', - 141: 'Countdown', - 142: 'CountdownCancel', - 147: 'PartyMessage', - 149: 'PlayerAddedToBlacklist', - 150: 'PlayerRemovedFromBlacklist', - 151: 'BlackList', - 158: 'LinkshellList', - 158: 'MailDeleteRequest', - 163: 'MarketBoardItemListingCount', - 164: 'MarketBoardItemListing', - 166: 'MarketBoardPurchase', - 168: 'MarketBoardItemListingHistory', - 169: 'RetainerSaleHistory', - 171: 'MarketBoardSearchResult', - 173: 'FreeCompanyInfo', - 175: 'ExamineFreeCompanyInfo', - 176: 'FreeCompanyDialog', - 201: 'StatusEffectList', - 202: 'StatusEffectListEureka', - 203: 'StatusEffectListBozja', - 204: 'StatusEffectListDouble', - 206: 'EffectResult1', - 207: 'EffectResult4', - 208: 'EffectResult8', - 209: 'EffectResult16', - 211: 'EffectResultBasic1', - 212: 'EffectResultBasic4', - 213: 'EffectResultBasic8', - 214: 'EffectResultBasic16', - 215: 'EffectResultBasic32', - 216: 'EffectResultBasic64', - 217: 'ActorControl', - 218: 'ActorControlSelf', - 219: 'ActorControlTarget', - 220: 'UpdateHpMpTp', - 221: 'ActionEffect1', - 224: 'ActionEffect8', - 225: 'ActionEffect16', - 226: 'ActionEffect24', - 227: 'ActionEffect32', - 230: 'StatusEffectListPlayer', - 232: 'UpdateRecastTimes', - 234: 'UpdateAllianceNormal', - 235: 'UpdateAllianceSmall', - 236: 'UpdatePartyMemberPositions', - 237: 'UpdateAllianceNormalMemberPositions', - 238: 'UpdateAllianceSmallMemberPositions', - 240: 'GCAffiliation', - 259: 'SpawnPlayer', - 260: 'SpawnNPC', - 261: 'SpawnBoss', - 262: 'DespawnCharacter', - 263: 'ActorMove', - 265: 'Transfer', - 266: 'ActorSetPos', - 268: 'ActorCast', - 269: 'PlayerUpdateLook', - 270: 'UpdateParty', - 271: 'InitZone', - 272: 'ApplyIDScramble', - 273: 'UpdateHate', - 274: 'UpdateHater', - 275: 'SpawnObject', - 276: 'DespawnObject', - 277: 'UpdateClassInfo', - 278: 'UpdateClassInfoEureka', - 279: 'UpdateClassInfoBozja', - 280: 'PlayerSetup', - 281: 'PlayerStats', - 282: 'FirstAttack', - 283: 'PlayerStateFlags', - 284: 'PlayerClassInfo', - 286: 'ModelEquip', - 287: 'Examine', - 290: 'CharaNameReq', - 294: 'RetainerInformation', - 296: 'ItemMarketBoardInfo', - 298: 'ItemInfo', - 299: 'ContainerInfo', - 300: 'InventoryTransactionFinish', - 301: 'InventoryTransaction', - 302: 'CurrencyCrystalInfo', - 304: 'InventoryActionAck', - 305: 'UpdateInventorySlot', - 307: 'OpenTreasure', - 310: 'LootMessage', - 314: 'CreateTreasure', - 315: 'TreasureFadeOut', - 316: 'HuntingLogEntry', - 318: 'EventPlay', - 319: 'EventPlay4', - 320: 'EventPlay8', - 321: 'EventPlay16', - 322: 'EventPlay32', - 323: 'EventPlay64', - 324: 'EventPlay128', - 325: 'EventPlay255', - 327: 'EventStart', - 328: 'EventFinish', - 339: 'EventContinue', - 341: 'ResultDialog', - 342: 'DesynthResult', - 347: 'QuestActiveList', - 348: 'QuestUpdate', - 349: 'QuestCompleteList', - 350: 'QuestFinish', - 353: 'MSQTrackerComplete', - 365: 'QuestTracker', - 386: 'Mount', - 388: 'DirectorVars', - 389: 'ContentDirectorSync', - 391: 'EnvControl', - 397: 'SystemLogMessage1', - 398: 'SystemLogMessage2', - 399: 'SystemLogMessage4', - 400: 'SystemLogMessage8', - 401: 'SystemLogMessage16', - 403: 'BattleTalk2', - 404: 'BattleTalk4', - 405: 'BattleTalk8', - 407: 'MapUpdate', - 408: 'MapUpdate4', - 409: 'MapUpdate8', - 410: 'MapUpdate16', - 411: 'MapUpdate32', - 412: 'MapUpdate64', - 413: 'MapUpdate128', - 415: 'BalloonTalk2', - 416: 'BalloonTalk4', - 417: 'BalloonTalk8', - 419: 'WeatherChange', - 420: 'PlayerTitleList', - 421: 'Discovery', - 423: 'EorzeaTimeOffset', - 436: 'EquipDisplayFlags', - 437: 'NpcYell', - 442: 'FateInfo', - 456: 'LandSetInitialize', - 457: 'LandUpdate', - 458: 'YardObjectSpawn', - 459: 'HousingIndoorInitialize', - 460: 'LandAvailability', - 462: 'LandPriceUpdate', - 463: 'LandInfoSign', - 464: 'LandRename', - 465: 'HousingEstateGreeting', - 466: 'HousingUpdateLandFlagsSlot', - 467: 'HousingLandFlags', - 468: 'HousingShowEstateGuestAccess', - 470: 'HousingObjectInitialize', - 471: 'HousingInternalObjectSpawn', - 473: 'HousingWardInfo', - 474: 'HousingObjectMove', - 475: 'HousingObjectDye', - 487: 'SharedEstateSettingsResponse', - 499: 'DailyQuests', - 501: 'DailyQuestRepeatFlags', - 503: 'LandUpdateHouseName', - 514: 'AirshipTimers', - 517: 'PlaceMarker', - 518: 'WaymarkPreset', - 519: 'Waymark', - 522: 'UnMount', - 525: 'CeremonySetActorAppearance', - 531: 'AirshipStatusList', - 532: 'AirshipStatus', - 533: 'AirshipExplorationResult', - 534: 'SubmarineStatusList', - 535: 'SubmarineProgressionStatus', - 536: 'SubmarineExplorationResult', - 538: 'SubmarineTimers', - 570: 'PrepareZoning', - 571: 'ActorGauge', - 572: 'CharaVisualEffect', - 573: 'LandSetMap', - 574: 'Fall', - 623: 'PlayMotionSync', - 632: 'CEDirector', - 654: 'IslandWorkshopSupplyDemand', + 2: 'Ping', # note: could be +1 + 3: 'Init', # note: could be +1 + 8: 'Logout', # note: could be +1 + 11: 'CFCancel', # note: could be +1 + 13: 'CFDutyInfo', # note: could be +1 + 14: 'CFNotify', # note: could be +1 + 18: 'CFPreferredRole', # note: could be +1 + 81: 'CrossWorldLinkshellList', # note: could be +1 + 89: 'FellowshipList', # note: could be +1 + 111: 'Playtime', # note: could be +1 + 112: 'CFRegistered', # note: could be +1 + 115: 'Chat', # note: could be +1 + 122: 'RSVData', + 123: 'RSFData', + 124: 'SocialMessage', + 125: 'SocialMessage2', + 127: 'SocialList', + 128: 'SocialRequestResponse', + 129: 'ExamineSearchInfo', + 130: 'UpdateSearchInfo', + 131: 'InitSearchInfo', + 132: 'ExamineSearchComment', + 135: 'ServerNoticeShort', + 136: 'ServerNotice', + 137: 'SetOnlineStatus', + 138: 'LogMessage', + 142: 'Countdown', + 143: 'CountdownCancel', + 148: 'PartyMessage', + 150: 'PlayerAddedToBlacklist', + 151: 'PlayerRemovedFromBlacklist', + 152: 'BlackList', + 159: 'LinkshellList', + 159: 'MailDeleteRequest', + 164: 'MarketBoardItemListingCount', + 165: 'MarketBoardItemListing', + 167: 'MarketBoardPurchase', + 169: 'MarketBoardItemListingHistory', + 170: 'RetainerSaleHistory', + 172: 'MarketBoardSearchResult', + 174: 'FreeCompanyInfo', + 176: 'ExamineFreeCompanyInfo', + 177: 'FreeCompanyDialog', + 202: 'StatusEffectList', + 203: 'StatusEffectListEureka', + 204: 'StatusEffectListBozja', + 205: 'StatusEffectListDouble', + 207: 'EffectResult1', + 208: 'EffectResult4', + 209: 'EffectResult8', + 210: 'EffectResult16', + 212: 'EffectResultBasic1', + 213: 'EffectResultBasic4', + 214: 'EffectResultBasic8', + 215: 'EffectResultBasic16', + 216: 'EffectResultBasic32', + 217: 'EffectResultBasic64', + 218: 'ActorControl', + 219: 'ActorControlSelf', + 220: 'ActorControlTarget', + 221: 'UpdateHpMpTp', + 222: 'ActionEffect1', + 225: 'ActionEffect8', + 226: 'ActionEffect16', + 227: 'ActionEffect24', + 228: 'ActionEffect32', + 231: 'StatusEffectListPlayer', + 233: 'UpdateRecastTimes', + 235: 'UpdateAllianceNormal', + 236: 'UpdateAllianceSmall', + 237: 'UpdatePartyMemberPositions', + 238: 'UpdateAllianceNormalMemberPositions', + 239: 'UpdateAllianceSmallMemberPositions', + 241: 'GCAffiliation', + 260: 'SpawnPlayer', + 261: 'SpawnNPC', + 262: 'SpawnBoss', + 263: 'DespawnCharacter', + 264: 'ActorMove', + 266: 'Transfer', + 267: 'ActorSetPos', + 269: 'ActorCast', + 270: 'PlayerUpdateLook', + 271: 'UpdateParty', + 272: 'InitZone', + 273: 'ApplyIDScramble', + 274: 'UpdateHate', + 275: 'UpdateHater', + 276: 'SpawnObject', + 277: 'DespawnObject', + 278: 'UpdateClassInfo', + 279: 'UpdateClassInfoEureka', + 280: 'UpdateClassInfoBozja', + 281: 'PlayerSetup', + 282: 'PlayerStats', + 283: 'FirstAttack', + 284: 'PlayerStateFlags', + 285: 'PlayerClassInfo', + 287: 'ModelEquip', + 288: 'Examine', + 291: 'CharaNameReq', + 295: 'RetainerInformation', + 297: 'ItemMarketBoardInfo', + 299: 'ItemInfo', + 300: 'ContainerInfo', + 301: 'InventoryTransactionFinish', + 302: 'InventoryTransaction', + 303: 'CurrencyCrystalInfo', + 305: 'InventoryActionAck', + 306: 'UpdateInventorySlot', + 308: 'OpenTreasure', + 311: 'LootMessage', + 315: 'CreateTreasure', + 316: 'TreasureFadeOut', + 317: 'HuntingLogEntry', + 319: 'EventPlay', + 320: 'EventPlay4', + 321: 'EventPlay8', + 322: 'EventPlay16', + 323: 'EventPlay32', + 324: 'EventPlay64', + 325: 'EventPlay128', + 326: 'EventPlay255', + 328: 'EventStart', + 329: 'EventFinish', + 340: 'EventContinue', + 342: 'ResultDialog', + 343: 'DesynthResult', + 348: 'QuestActiveList', + 349: 'QuestUpdate', + 350: 'QuestCompleteList', + 351: 'QuestFinish', + 354: 'MSQTrackerComplete', + 366: 'QuestTracker', + 387: 'Mount', + 389: 'DirectorVars', + 390: 'ContentDirectorSync', + 392: 'EnvControl', + 398: 'SystemLogMessage1', + 399: 'SystemLogMessage2', + 400: 'SystemLogMessage4', + 401: 'SystemLogMessage8', + 402: 'SystemLogMessage16', + 404: 'BattleTalk2', + 405: 'BattleTalk4', + 406: 'BattleTalk8', + 408: 'MapUpdate', + 409: 'MapUpdate4', + 410: 'MapUpdate8', + 411: 'MapUpdate16', + 412: 'MapUpdate32', + 413: 'MapUpdate64', + 414: 'MapUpdate128', + 416: 'BalloonTalk2', + 417: 'BalloonTalk4', + 418: 'BalloonTalk8', + 420: 'WeatherChange', + 421: 'PlayerTitleList', + 422: 'Discovery', + 424: 'EorzeaTimeOffset', + 437: 'EquipDisplayFlags', + 438: 'NpcYell', + 443: 'FateInfo', + 457: 'LandSetInitialize', + 458: 'LandUpdate', + 459: 'YardObjectSpawn', + 460: 'HousingIndoorInitialize', + 461: 'LandAvailability', + 463: 'LandPriceUpdate', + 464: 'LandInfoSign', + 465: 'LandRename', + 466: 'HousingEstateGreeting', + 467: 'HousingUpdateLandFlagsSlot', + 468: 'HousingLandFlags', + 469: 'HousingShowEstateGuestAccess', + 471: 'HousingObjectInitialize', + 472: 'HousingInternalObjectSpawn', + 474: 'HousingWardInfo', + 475: 'HousingObjectMove', + 476: 'HousingObjectDye', + 488: 'SharedEstateSettingsResponse', + 500: 'DailyQuests', + 502: 'DailyQuestRepeatFlags', + 504: 'LandUpdateHouseName', + 515: 'AirshipTimers', + 518: 'PlaceMarker', + 519: 'WaymarkPreset', + 520: 'Waymark', + 523: 'UnMount', # note: could be up to -2 + 526: 'CeremonySetActorAppearance', # note: could be up to -2 + 532: 'AirshipStatusList', # note: could be up to -2 + 533: 'AirshipStatus', # note: could be up to -2 + 534: 'AirshipExplorationResult', # note: could be up to -2 + 535: 'SubmarineStatusList', # note: could be up to -2 + 536: 'SubmarineProgressionStatus', # note: could be up to -2 + 537: 'SubmarineExplorationResult', # note: could be up to -2 + 539: 'SubmarineTimers', # note: could be up to -2 + 569: 'PrepareZoning', # note: could be up to -1 + 570: 'ActorGauge', + 571: 'CharaVisualEffect', + 572: 'LandSetMap', + 573: 'Fall', + 622: 'PlayMotionSync', + 631: 'CEDirector', + 653: 'IslandWorkshopSupplyDemand', } def find_next_func_by_sig(ea, pattern):