private ImageTlsCallback[] ParseTlsCallbacks(ulong addressOfCallBacks) { var callbacks = new List <ImageTlsCallback>(); var rawAddressOfCallbacks = (uint)addressOfCallBacks.VaToOffset(_sectionsHeaders); uint count = 0; while (true) { if (_is64Bit) { var cb = new ImageTlsCallback(PeFile, rawAddressOfCallbacks + count * 8, _is64Bit); if (cb.Callback == 0) { break; } callbacks.Add(cb); count++; } else { var cb = new ImageTlsCallback(PeFile, rawAddressOfCallbacks + count * 4, _is64Bit); if (cb.Callback == 0) { break; } callbacks.Add(cb); count++; } } return(callbacks.ToArray()); }
public void ImageTlsCallback32ConstructorWorks_Test() { var tlsCallback = new ImageTlsCallback(new BufferFile(RawStructures.RawTlsCallback32), 2, false); Assert.Equal((ulong)0x33221100, tlsCallback.Callback); }
public void ImageTlsCallback64ConstructorWorks_Test() { var tlsCallback = new ImageTlsCallback(new BufferFile(RawStructures.RawTlsCallback64), 2, true); Assert.Equal((ulong)0x7766554433221100, tlsCallback.Callback); }