Your question is kind of confusing. The reason being is because you mention that you want to block a specific packet. However you also mention that it can be changed. Therefore if you set out to blcck at the Packet level on a packet by packet. You're going to pull your hair out. I would recommend looking at SharpPcap. It's a .NET port of the WinPCap. Using this library in your .NET code you can, examine the packets, and attempt to find something that you can filter on. MAC, IP, Structure. Within the .NET application itself.
Sharp Pcap can be found
Here