#include DECLARE_API(ndiswancb) { DWORD Address, BytesRead; NDISWANCB NdisWanCB; Address = GetExpression("ndiswan!ndiswancb"); if (!ReadMemory(Address, &NdisWanCB, sizeof(NDISWANCB), &BytesRead)) { return; } if (BytesRead >= sizeof(NDISWANCB)) { DisplayNdisWanCB(Address, &NdisWanCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(NdisWanCB)); } return; } DECLARE_API(enumwanadaptercb) { DWORD Address, BytesRead; WAN_GLOBAL_LIST AdapterList; PWAN_GLOBAL_LIST Address1; Address = GetExpression("ndiswan!wanadaptercblist"); Address1 = (PWAN_GLOBAL_LIST)Address; if (!ReadMemory(Address, &AdapterList, sizeof(WAN_GLOBAL_LIST), &BytesRead)) { return; } if (BytesRead >= sizeof(WAN_GLOBAL_LIST)) { dprintf("WanAdapterCBList: 0x%8.8x\n",Address); dprintf(" Lock: 0x%8.8x Irql: 0x%8.8x\n", AdapterList.Lock.SpinLock, AdapterList.Lock.OldIrql); dprintf(" Count: %ld MaxCount: %ld\n", AdapterList.ulCount, AdapterList.ulMaxCount); Address = AdapterList.List.Flink; while ((PVOID)Address != (PVOID)&Address1->List) { WAN_ADAPTERCB WanAdapterCB; if (ReadMemory(Address, &WanAdapterCB, sizeof(WAN_ADAPTERCB), &BytesRead)) { DisplayWanAdapterCB(Address, &WanAdapterCB); } Address = (DWORD)WanAdapterCB.Linkage.Flink; } } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(WAN_GLOBAL_LIST)); } } DECLARE_API(wanadaptercb) { DWORD Address, BytesRead; WAN_ADAPTERCB WanAdapterCB; PUCHAR s = (PSTR)args; BOOLEAN Verbose = FALSE; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("wanadapter \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &WanAdapterCB, sizeof(WAN_ADAPTERCB), &BytesRead)) { return; } if (BytesRead >= sizeof(WAN_ADAPTERCB)) { DisplayWanAdapterCB(Address, &WanAdapterCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(WanAdapterCB)); } } DECLARE_API(enumadaptercb) { DWORD Address, BytesRead; WAN_GLOBAL_LIST AdapterList; PWAN_GLOBAL_LIST Address1; Address = GetExpression("ndiswan!adaptercblist"); Address1 = (PWAN_GLOBAL_LIST)Address; if (!ReadMemory(Address, &AdapterList, sizeof(WAN_GLOBAL_LIST), &BytesRead)) { return; } if (BytesRead >= sizeof(WAN_GLOBAL_LIST)) { dprintf("AdapterCBList: 0x%8.8x\n",Address); dprintf(" Lock: 0x%8.8x Irql: 0x%8.8x\n", AdapterList.Lock.SpinLock, AdapterList.Lock.OldIrql); dprintf(" Count: %ld MaxCount: %ld\n", AdapterList.ulCount, AdapterList.ulMaxCount); Address = AdapterList.List.Flink; while ((PVOID)Address != (PVOID)&Address1->List) { ADAPTERCB AdapterCB; if (ReadMemory(Address, &AdapterCB, sizeof(ADAPTERCB), &BytesRead)) { DisplayAdapterCB(Address, &AdapterCB); } Address = (DWORD)AdapterCB.Linkage.Flink; } } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(WAN_GLOBAL_LIST)); } } DECLARE_API(adaptercb) { DWORD Address, BytesRead; ADAPTERCB AdapterCB; PUCHAR s = (PSTR)args; BOOLEAN Verbose = FALSE; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("adapter \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &AdapterCB, sizeof(ADAPTERCB), &BytesRead)) { return; } if (BytesRead >= sizeof(ADAPTERCB)) { DisplayAdapterCB(Address, &AdapterCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(AdapterCB)); } } DECLARE_API(connectiontable) { DWORD Address, Address1, BytesRead, i, j; CONNECTION_TABLE ConnectionTable; Address = GetExpression("ndiswan!connectiontable"); if (!ReadMemory(Address, &Address1, sizeof(DWORD), &BytesRead)) { return; } if (!ReadMemory(Address1, &ConnectionTable, sizeof(CONNECTION_TABLE), &BytesRead)) { return; } if (BytesRead >= sizeof(CONNECTION_TABLE)) { DisplayConnectionTable(Address, &ConnectionTable); for (i = 0, j = 0; j < ConnectionTable.ulNumActiveLinks; i++) { LINKCB LinkCB; // // Get pointer to location in Linktable // Address = ConnectionTable.LinkArray + i; if (!ReadMemory(Address, &Address1, sizeof(DWORD), &BytesRead)) { continue; } if (Address1 != NULL) { if (ReadMemory(Address1, &LinkCB, sizeof(LINKCB), &BytesRead)) { DisplayLinkCB(Address1, &LinkCB); j++; } } } for (i = 0, j = 0; j < ConnectionTable.ulNumActiveBundles; i++) { BUNDLECB BundleCB; // // Get pointer to location in bundletable // Address = ConnectionTable.BundleArray + i; if (!ReadMemory(Address, &Address1, sizeof(DWORD), &BytesRead)) { continue; } if (Address1 != NULL) { if (ReadMemory(Address1, &BundleCB, sizeof(BUNDLECB), &BytesRead)) { DisplayBundleCB(Address1, &BundleCB); j++; } } } } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(CONNECTION_TABLE)); } } DECLARE_API(bundlecb) { DWORD Address, BytesRead; BUNDLECB BundleCB; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("bundlecb \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &BundleCB, sizeof(BUNDLECB), &BytesRead)) { return; } if (BytesRead >= sizeof(BUNDLECB)) { DisplayBundleCB(Address, &BundleCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(BUNDLECB)); } } DECLARE_API(linkcb) { DWORD Address, BytesRead; LINKCB LinkCB; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("linkcb \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &LinkCB, sizeof(LINKCB), &BytesRead)) { return; } if (BytesRead >= sizeof(LINKCB)) { DisplayLinkCB(Address, &LinkCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(LINKCB)); } } DECLARE_API(protocolcb) { DWORD Address, BytesRead; PROTOCOLCB ProtocolCB; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("protocolcb \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &ProtocolCB, sizeof(PROTOCOLCB), &BytesRead)) { return; } if (BytesRead >= sizeof(PROTOCOLCB)) { DisplayProtocolCB(Address, &ProtocolCB); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(PROTOCOLCB)); } } DECLARE_API(wanpacket) { DWORD Address, BytesRead; NDIS_WAN_PACKET Packet; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("wanpacket \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &Packet, sizeof(NDIS_WAN_PACKET), &BytesRead)) { return; } if (BytesRead >= sizeof(NDIS_WAN_PACKET)) { DisplayWanPacket(Address, &Packet); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(NDIS_WAN_PACKET)); } } DECLARE_API(ndispacket) { DWORD Address, BytesRead; NDIS_PACKET Packet; // // Did they forget something... // if (0 == args[0]) { Usage: dprintf("ndispacket \n"); return; } sscanf(args, "%lx", &Address); if (!ReadMemory(Address, &Packet, sizeof(NDIS_PACKET), &BytesRead)) { return; } if (BytesRead >= sizeof(NDIS_PACKET)) { DisplayNdisPacket(Address, &Packet); } else { dprintf("Only read %d bytes, expected %d bytes\n", BytesRead, sizeof(NDIS_PACKET)); } }