Пример #1
0
 public void Write(PeWriter wtr)
 {
     wtr.SetPosition(StandardFieldsOffset);
     sf.Write(wtr);
     wsf.Write(wtr);
     dd.Write(wtr);
 }
Пример #2
0
        public void Write(PeWriter wtr)
        {
            wtr.SetPosition(SectionHeadersOffset);
            uint datPtr = SectionHeadersOffset + 40 * (uint)this.Count;

            if (file.Type == PeFileType.Image)
            {
                uint align = file.OptionalHeader.WindowsSpecificFields.FileAlignment;
                if (datPtr < align)
                {
                    datPtr = align;
                }
                else
                {
                    uint newPtr = align;
                    while (datPtr > align)
                    {
                        newPtr += align; datPtr -= align;
                    }
                    datPtr = newPtr;
                }
            }
            for (int i = 0; i < file.PEHeader.NumberOfSections; i++)
            {
                Items[i].Write(wtr, ref datPtr);
            }
        }
Пример #3
0
 internal void Write(PeWriter wtr, ref uint datPtr)
 {
     for (int i = 0; i < 8; i++)
     {
         if (i < n.Length)
         {
             wtr.Write((byte)n[i]);
         }
         else
         {
             wtr.Write((byte)0);
         }
     }
     wtr.Write((uint)vSize);
     wtr.Write((uint)vPtr);
     wtr.Write((uint)dat.Length);
     wtr.Write((uint)datPtr);
     wtr.Write((uint)relocPtr);
     wtr.Write((uint)lnPtr);
     wtr.Write((ushort)relocNo);
     wtr.Write((ushort)lnNo);
     wtr.Write((uint)c);
     wtr.SaveLocation();
     wtr.SetPosition(datPtr);
     wtr.Write(dat);
     wtr.LoadLocation();
     datPtr += (uint)dat.Length;
 }
Пример #4
0
 public void Write(PeWriter wtr)
 {
     wtr.SetPosition(hdr.DataDirectoriesOffset);
     for (int i = 0; i < 16; i++)
     {
         wtr.Write(Items[i].Address);
         wtr.Write(Items[i].Size);
     }
 }
Пример #5
0
 public override void Write(PeWriter wtr)
 {
     wtr.SetPosition(PEHeaderOffset);
     wtr.Write((ushort)m);
     wtr.Write((ushort)noSect);
     wtr.WriteStamp(stamp);
     wtr.Write((uint)ptrSym);
     wtr.Write((uint)noSym);
     wtr.Write((ushort)sOh);
     wtr.Write((ushort)c);
 }
Пример #6
0
 public void Save(PeWriter wtr, uint adr)
 {
     wtr.SetPosition(adr);
     foreach (CertificateEntry i in items)
     {
         wtr.Write((uint)i.CertificateData.Length + 8);
         wtr.Write((ushort)i.Revision);
         wtr.Write((ushort)i.CertificateType);
         wtr.Write(i.CertificateData);
     }
 }
Пример #7
0
 public override void Write(PeWriter wtr)
 {
     wtr.SetPosition(hdr.WindowsSpecificFieldsOffset);
     if (hdr.Type == ExecutableType.PE32Plus)
     {
         wtr.Write((ulong)imgBas);
         wtr.Write((uint)sectA);
         wtr.Write((uint)fA);
         wtr.Write((ushort)maOs);
         wtr.Write((ushort)miOs);
         wtr.Write((ushort)maImg);
         wtr.Write((ushort)miImg);
         wtr.Write((ushort)maSs);
         wtr.Write((ushort)miSs);
         wtr.Write((uint)winVer);
         wtr.Write((uint)sImg);
         wtr.Write((uint)sHdr);
         wtr.Write((uint)cs);
         wtr.Write((ushort)Ss);
         wtr.Write((ushort)dll);
         wtr.Write((ulong)sSr);
         wtr.Write((ulong)sSc);
         wtr.Write((ulong)sHr);
         wtr.Write((ulong)sHc);
         wtr.Write((uint)ldrF);
         wtr.Write((uint)noDd);
     }
     else
     {
         wtr.Write((uint)imgBas);
         wtr.Write((uint)sectA);
         wtr.Write((uint)fA);
         wtr.Write((ushort)maOs);
         wtr.Write((ushort)miOs);
         wtr.Write((ushort)maImg);
         wtr.Write((ushort)miImg);
         wtr.Write((ushort)maSs);
         wtr.Write((ushort)miSs);
         wtr.Write((uint)winVer);
         wtr.Write((uint)sImg);
         wtr.Write((uint)sHdr);
         wtr.Write((uint)cs);
         wtr.Write((ushort)Ss);
         wtr.Write((ushort)dll);
         wtr.Write((uint)sSr);
         wtr.Write((uint)sSc);
         wtr.Write((uint)sHr);
         wtr.Write((uint)sHc);
         wtr.Write((uint)ldrF);
         wtr.Write((uint)noDd);
     }
 }
Пример #8
0
 public override void Write(PeWriter wtr)
 {
     wtr.SetPosition(hdr.StandardFieldsOffset);
     wtr.Write((ushort)hdr.t);
     wtr.Write(maL);
     wtr.Write(miL);
     wtr.Write(sC);
     wtr.Write(sI);
     wtr.Write(sU);
     wtr.Write(entry);
     wtr.Write(bc);
     if (Magic != ExecutableType.PE32Plus)
     {
         wtr.Write(bd);
     }
 }