コード例 #1
0
 public override void Write(PeWriter wtr)
 {
     wtr.BaseStream.Position = 0;
     wtr.Write((ushort)m);
     wtr.Write(hc);
     wtr.Write((uint)o);
     wtr.Write(ds);
 }
コード例 #2
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);
     }
 }
コード例 #3
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);
     }
 }
コード例 #4
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);
     }
 }
コード例 #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 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);
     }
 }
コード例 #7
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;
 }