XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Runtime.InteropServices;

namespace XFEEDToolBox.Plugin;

internal static unsafe partial class Navigation
{
    static uint GalaxyAccountTradeSelfTest()
    {
        var memory=Platform.Allocate(8192);if(memory==0)return 0;
        try
        {
            var fakeImage=unchecked((nuint)0x140000000UL);var manager=memory;var owner=memory+1024;var buckets=memory+2048;var node=memory+4096;
            Write(manager,fakeImage+0x552EA70);Write(manager+8,fakeImage+0x552EAA0);Write(manager+0x58,fakeImage+0x552EBA0);
            Write(manager+0x10,owner);Write(manager+0x110,buckets);Write(manager+0x118,2UL);Write(manager+0x128,1UL);Write(manager+0xD0,86400UL);
            Write(buckets,node);Write(buckets+8,buckets+8);Write(node,buckets);Write(node+8,9007199254740995UL);Write(node+0x10,1700000000UL);
            uint passed=0;
            if(CopyGalaxyTradeDataManager(manager,owner,fakeImage,out var ttl,out var items)&&ttl==86400&&
               items.Length==1&&items[0].systemAddress==9007199254740995&&items[0].timestamp==1700000000)passed|=1;
            if(!new GalaxyAccountTradeData(1,2,ttl,items).complete)passed|=2;
            Write(manager+0x128,16385UL);if(!CopyGalaxyTradeDataManager(manager,owner,fakeImage,out _,out _))passed|=4;
            Write(manager+0x128,1UL);Write(node,node);if(!CopyGalaxyTradeDataManager(manager,owner,fakeImage,out _,out _))passed|=8;
            Write(node,buckets);Write(node+8,0UL);if(!CopyGalaxyTradeDataManager(manager,owner,fakeImage,out _,out _))passed|=16;
            Write(node+8,9007199254740995UL);Write(manager+0x10,owner+8);if(!CopyGalaxyTradeDataManager(manager,owner,fakeImage,out _,out _))passed|=32;
            Write(manager+0x10,owner);Write(manager+0x118,65537UL);if(!CopyGalaxyTradeDataManager(manager,owner,fakeImage,out _,out _))passed|=64;
            Write(manager+0x118,2UL);Write(manager+0x128,0UL);Write(buckets,buckets);
            if(CopyGalaxyTradeDataManager(manager,owner,fakeImage,out ttl,out items)&&items.Length==0&&
               !new GalaxyAccountTradeData(1,2,ttl,items).complete)passed|=128;
            return passed;
        }
        finally{Platform.Free(memory);}
    }
#if PLUGIN_NAVIGATION
    [UnmanagedCallersOnly(EntryPoint="XFENavigationGalaxyTradeDataSelfTest")]
    internal static uint ExportGalaxyAccountTradeSelfTest()=>RunTest(GalaxyAccountTradeSelfTest);
#endif
}