亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pefixups.pas

?? SrcDecompiler is about creating a Delphi program decompiler. The program is written for Delphi 4 or
?? PAS
字號:

//    Author:          Python
//    Version:         0.0.1.0
//    LastModified:    2-17-2000
//    LatestVersion:   http://thunder.prohosting.com/~pytho/
//    Copyright (c) 1999, 2000 Python. All rights reserved

unit peFixups;

interface

uses
  Classes;

type
  TPEFixup = record
    FixupType: Byte;
    Address: PChar;
  end;

  { TFixups }

  TFixups = class(TObject)
  private
    FList: Pointer;
    FCount: Integer;
    FPEFile: TObject;
    function GetFixup(Index: Integer): TPEFixup;
  public
    constructor Create(PEFile: TObject);
    destructor Destroy; override;
    procedure ApplyFixups;
    procedure Del0Fixups;

    function Add(Fixup: TPEFixup): Integer; overload;
    function Add(AFixupType: Byte; AAddress: PChar): Integer; overload;
    procedure Delete(Index: Integer);

    function FindFixup(Address: PChar): Integer;
    function FindFixupAfter(Address: PChar): Integer;
    function FindFixupTo(Address: PChar): Integer;
    function FindFixupToAfter(Address: PChar): Integer;

    property Items[Index: Integer]: TPEFixup read GetFixup; default;
    property Count: Integer read FCount;
  end;

implementation

uses
  PEFile, Windows;

{ TFixups }

type
  TPEFixups = array[0..MaxListSize] of TPEFixup;

constructor TFixups.Create(PEFile: TObject);
var
  FixupTable: PChar;
  EndFixupBlock: PChar;
  PageRVA: Integer;
  XPEFile: TPEFile absolute PEFile;
begin
  inherited Create;
  FPEFile := PEFile;

  FixupTable := XPEFile.FileBase +
        PIMAGE_NT_HEADERS(XPEFile.FileBase + PImageDosHeader(XPEFile.FileBase)^._lfanew)^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
  // While PageRVA <> 0 apply fixup Block.
  while PInteger(FixupTable)^ <> 0 do
  begin
    // Save page RVA.
    PageRVA := PInteger(FixupTable)^;
    // Calculate end fixup block
    EndFixupBlock := Fixuptable + PInteger(FixupTable + 4)^;
    // skip page rva and fixup block.
    Inc(FixupTable, 8);

    while FixupTable < EndFixupBlock do
    begin
      // Save the fixup in the fixup list
      Add(Byte(FixupTable[1]) shr 4,
          XPEFile.FileBase + pageRVA + (PWord(FixupTable)^ and $0FFF));

      // Next fixup.
      Inc(FixupTable, 2);
    end;
  end;
end;

destructor TFixups.Destroy;
begin
  FreeMem(FList, FCount * SizeOf(TPEFixup));
  inherited Destroy;
end;

procedure TFixups.ApplyFixups;
var
  I: Integer;
  Delta: Integer;
begin
  // Calculate Delta
  Delta := TPEFile(FPEFile).FileBase - TPEFile(FPEFile).ImageBase;
  // Apply Delta
  if Delta <> 0 then
    for I := Count -1 downto 0 do
      case TPEFixups(FList^)[I].FixupType of
        // Nothing.
        0: ;
        // High
        1: Inc(PWord(TPEFixups(FList^)[I].Address)^, Delta shr 4);
        // Low
        2: Inc(PWord(TPEFixups(FList^)[I].Address)^, Word(Delta));
        // HighLow
        3: Inc(PDWord(TPEFixups(FList^)[I].Address)^, Delta);
      end;
end;

procedure TFixups.Del0Fixups;
var
  I: Integer;
begin
  // Delete fixups with fixuptype 0 (those who do nothing).
  for I := Count -1 downto 0 do
    if TPEFixups(FList^)[I].FixupType = 0 then
      Delete(I);
end;

function TFixups.GetFixup(Index: Integer): TPEFixup;
begin
  Result := TPEFixups(FList^)[Index];
end;

function TFixups.Add(Fixup: TPEFixup): Integer;
begin
  Inc(FCount);
  ReallocMem(FList, FCount * SizeOf(TPEFixup));
  // Search the place where the fixup must be inserted.
  for Result := FCount -1 downto 0 do
    if (Result = 0) or (TPEFixups(FList^)[Result -1].Address < Fixup.Address) then
    begin
      Move(TPEFixups(FList^)[Result], TPEFixups(FList^)[Result +1],
       (FCount - Result -1) * SizeOf(TPEFixup));
      TPEFixups(FList^)[Result] := Fixup;
      Exit;
    end;
  Result := -1;
end;

function TFixups.Add(AFixupType: Byte; AAddress: PChar): Integer;
var
  Fixup: TPEFixup;
begin
  Fixup.FixupType := AFixupType;
  Fixup.Address := AAddress;
  Result := Add(Fixup);
end;

procedure TFixups.Delete(Index: Integer);
begin
  Dec(FCount);
  Move(TPEFixups(FList^)[Index +1], TPEFixups(FList^)[Index],
     (FCount - Index) * SizeOf(TPEFixup));
  ReallocMem(FList, FCount * SizeOf(TPEFixup));
end;

function TFixups.FindFixup(Address: PChar): Integer;
var
  H, I, C: Integer;
begin
  // Fixups are ordened on address, so search using quick search.
  Result := 0;
  H := FCount - 1;
  while Result <= H do
  begin
    I := (Result + H) shr 1;
    C := TPEFixups(FList^)[I].Address - Address;
    if C < 0 then Result := I + 1 else
    begin
      H := I - 1;
      if C = 0 then
        Exit;
    end;
  end;
  Result := -1;
end;

function TFixups.FindFixupAfter(Address: PChar): Integer;
var
  H, I, C: Integer;
begin
  // Fixups are ordened on address, so search using quick search.
  Result := 0;
  H := FCount - 1;
  while Result <= H do
  begin
    I := (Result + H) shr 1;
    C := TPEFixups(FList^)[I].Address - Address;
    if C <= 0 then
      Result := I + 1
    else
      H := I - 1;
  end;
  if Result >= Count then
    Result := -1;
end;

function TFixups.FindFixupTo(Address: PChar): Integer;
begin
  // Loop though all the fixups.
  for Result := 0 to Count -1 do
    if PPChar(TPEFixups(FList^)[Result].Address)^ = Address then
      Exit;
  Result := -1;
end;

function TFixups.FindFixupToAfter(Address: PChar): Integer;
var
  LowestAddress: PChar;
  I: Integer;
begin
  LowestAddress := pointer(MaxInt);
  Result := -1;
  for I := 0 to Count -1 do
    if (PPChar(TPEFixups(FList^)[I].Address)^ > Address) and
       (PPChar(TPEFixups(FList^)[I].Address)^ < LowestAddress) then
    begin
      Result := I;
      LowestAddress := PPChar(TPEFixups(FList^)[Result].Address)^;
    end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线观看网站| 国产精品天天摸av网| 在线观看国产日韩| 99re热视频精品| 99视频在线观看一区三区| 99久久99久久精品免费观看| 成人va在线观看| 97国产一区二区| www.亚洲精品| 欧美亚洲国产bt| 91精品国产综合久久小美女| 欧美一区二区在线免费观看| 日韩一级片网址| 久久精品一区二区三区不卡| 国产精品麻豆99久久久久久| 日韩美女视频一区| 日韩制服丝袜先锋影音| 乱一区二区av| 99这里都是精品| 在线免费观看日本欧美| 日韩欧美一区二区视频| 久久久亚洲国产美女国产盗摄 | 成人免费在线观看入口| 亚洲色图欧美在线| 日本亚洲三级在线| 国产**成人网毛片九色 | 日韩欧美激情一区| 国产亚洲污的网站| 亚洲一区二区在线播放相泽| 精品在线免费观看| 91麻豆免费看| 久久久亚洲精品石原莉奈| 亚洲男人的天堂网| 国产一区二区三区免费在线观看| a4yy欧美一区二区三区| 欧美一区二区三区喷汁尤物| 中文字幕不卡在线观看| 日韩黄色在线观看| 色哟哟国产精品免费观看| 欧美一区二区私人影院日本| 国产精品国产三级国产普通话三级| 亚洲成a人片在线不卡一二三区| 久久99精品国产麻豆不卡| 99re这里都是精品| 久久视频一区二区| 性久久久久久久久久久久| 成人av资源在线观看| 日韩欧美激情一区| 亚洲成人动漫精品| 一本一道波多野结衣一区二区| 欧美精品一区在线观看| 日韩和欧美一区二区三区| 色老汉一区二区三区| 欧美—级在线免费片| 九九九久久久精品| 欧美日韩美女一区二区| 亚洲欧美激情在线| 成人app在线| 久久色成人在线| 日本成人在线视频网站| 欧美偷拍一区二区| 亚洲综合色成人| 91免费视频网| 中文字幕亚洲综合久久菠萝蜜| 国产在线观看免费一区| 欧美成人性战久久| 蜜桃视频第一区免费观看| 欧美日韩国产影片| 婷婷开心激情综合| 欧美色图免费看| 亚洲一区二区三区三| 日本高清免费不卡视频| 亚洲影院久久精品| 欧美性高清videossexo| 亚洲精品成a人| 欧美午夜在线一二页| 亚洲国产成人av好男人在线观看| 一本到高清视频免费精品| 亚洲欧洲综合另类| 欧美日韩一区二区在线观看| 亚洲精品一二三四区| 欧美日韩视频在线第一区 | 日本一区二区三区高清不卡| 国产精品一区一区三区| 国产欧美一区二区精品秋霞影院 | 色婷婷精品久久二区二区蜜臀av | 欧美激情自拍偷拍| 国产成人高清视频| 亚洲视频在线观看三级| 91精品福利视频| 午夜影院久久久| 精品少妇一区二区| 成人午夜电影小说| 亚洲va欧美va国产va天堂影院| 欧美综合亚洲图片综合区| 婷婷丁香久久五月婷婷| 欧美变态凌虐bdsm| 成人激情动漫在线观看| 亚洲免费视频成人| 日韩欧美综合一区| 成人视屏免费看| 五月天亚洲婷婷| 国产日韩欧美在线一区| 日本韩国欧美在线| 精品一区二区三区不卡| 亚洲免费在线播放| 欧美mv和日韩mv的网站| av电影一区二区| 免费人成精品欧美精品| 国产精品乱人伦| 欧美一区二区三区四区视频| 国产在线不卡一区| 亚洲一区二区av电影| 国产欧美日韩精品一区| 欧美精品一级二级三级| 国产激情偷乱视频一区二区三区| 一区二区三区欧美日| 精品国产精品网麻豆系列| 色吧成人激情小说| 国产精品一区二区你懂的| 午夜国产精品一区| 国产精品乱码一区二三区小蝌蚪| 在线不卡中文字幕播放| eeuss鲁片一区二区三区| 麻豆91精品91久久久的内涵| 一区二区三区欧美激情| 国产精品毛片大码女人| 久久这里都是精品| 91精品免费观看| 欧美视频日韩视频| 99这里只有精品| 成人av手机在线观看| 精品一区二区三区av| 免费不卡在线观看| 亚洲国产视频网站| 日韩电影在线看| 亚洲人成电影网站色mp4| 中文乱码免费一区二区| 26uuu另类欧美| 精品国产91乱码一区二区三区 | 国产一区久久久| 男女男精品视频| 午夜成人免费视频| 亚洲一区二区三区国产| 一区二区国产盗摄色噜噜| 亚洲欧洲成人自拍| 亚洲少妇中出一区| 亚洲卡通动漫在线| 一区二区三区四区中文字幕| 日韩美女视频一区二区| 亚洲老司机在线| 亚洲一区二区综合| 亚洲1区2区3区4区| 日本不卡一区二区三区| 日本不卡免费在线视频| 蜜乳av一区二区三区| 美国十次综合导航| 免费高清在线一区| 国产一区二区在线电影| 国产ts人妖一区二区| www.日韩大片| 日本电影欧美片| 宅男噜噜噜66一区二区66| 91精品国产aⅴ一区二区| 欧美精品一区二区三区久久久| 精品成a人在线观看| 国产日韩欧美一区二区三区乱码| 国产午夜一区二区三区| 国产精品久久久久久一区二区三区 | 欧美一区午夜精品| 久久亚洲影视婷婷| 国产精品护士白丝一区av| 国产成人亚洲精品青草天美 | 欧美日韩综合不卡| 日韩一区二区免费高清| 久久嫩草精品久久久精品一| 国产精品嫩草影院com| 亚洲一区二区三区自拍| 久久av资源网| 成人精品gif动图一区| 欧美日韩综合色| 精品国产污网站| 亚洲久草在线视频| 国内久久婷婷综合| 色先锋久久av资源部| 精品少妇一区二区三区视频免付费 | 中文字幕亚洲精品在线观看| 一级女性全黄久久生活片免费| 秋霞国产午夜精品免费视频| 成人综合婷婷国产精品久久蜜臀| 欧洲一区二区av| 国产三级精品三级| 日本在线不卡视频一二三区| 成人爱爱电影网址| 欧美成人精品3d动漫h| 亚洲色欲色欲www在线观看| 麻豆一区二区三| 欧美性xxxxx极品少妇| 中国av一区二区三区| 久久9热精品视频|