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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? disassembler.pas.svn-base

?? 這是一段游戲修改工具的源代碼.ring3功能由dephi開(kāi)發(fā),驅(qū)動(dòng)是C開(kāi)發(fā).希望對(duì)大家有幫助
?? SVN-BASE
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
unit disassembler;
//eric, voeg int3 afhandeling toe
interface

uses imagehlp,sysutils,windows,symbolhandler,cefuncproc{$ifdef net}{$ifndef netserver},NetAPIs{$endif}{$endif}{$ifndef netclient},NewKernelHandler{$endif};

type Tprefix = set of byte;
type TMemory = array [0..23] of byte;

function rd(bt: byte): string;
function rd8(bt:byte): string;
function rd16(bt:byte): string;

function r8(bt:byte): string;
function r16(bt:byte): string;
function r32(bt:byte): string;
function mm(bt:byte): string;
function xmm(bt:byte): string;
function sreg(bt:byte): string;
function CR(bt:byte):string;
function DR(bt:byte):string;



function GetBitOf(Bt: dword; bit: integer): byte;
function getsegmentoverride(prefix: TPrefix): string;
function getmod(bt: byte): byte;
function getRM(bt: byte): byte;
function getREG(bt: byte): byte;

function SIB(memory:TMemory; sibbyte: integer; var last: dword): string;
function MODRM(memory:TMemory; prefix: TPrefix; modrmbyte: integer; inst: integer; var last: dword): string;

function disassemble(var offset: dword): string; overload;
function disassemble(var offset: dword; var description: string): string; overload;

function previousopcode(address: dword):dword;
//function translatestring(disassembled: string; numberofbytes: integer; showvalues: boolean):string;
function translatestring(disassembled: string; numberofbytes: integer; showvalues: boolean; var address: string; var bytes: string; var opcode: string; var special:string):string;

function inttohexs(address:dword;chars: integer):string;

var mode16: boolean;

implementation

//dont use it by otherunits
{$ifndef net}
{$ifndef standalonetrainer}
uses assemblerunit,debugger, StrUtils;
{$endif}
{$endif}


function rd(bt:byte):string;
begin
  case bt of
  0: result:='eax';
  1: result:='ecx';
  2: result:='edx';
  3: result:='ebx';
  4: result:='esp';
  5: result:='ebp';
  6: result:='esi';
  7: result:='edi';
  end;
end;


function rd8(bt:byte): string;
begin
  case bt of
  0: result:='al';
  1: result:='cl';
  2: result:='dl';
  3: result:='bl';
  4: result:='ah';
  5: result:='ch';
  6: result:='dh';
  7: result:='bh';
  end;
end;


function rd16(bt:byte):string;
begin
  case bt of
  0: result:='ax';
  1: result:='cx';
  2: result:='dx';
  3: result:='bx';
  4: result:='sp';
  5: result:='bp';
  6: result:='si';
  7: result:='di';
  end;
end;


function r8(bt:byte): string;
begin
  case getreg(bt) of
  0: result:='al';
  1: result:='cl';
  2: result:='dl';
  3: result:='bl';
  4: result:='ah';
  5: result:='ch';
  6: result:='dh';
  7: result:='bh';
  end;
end;

function r16(bt:byte): string;
begin
  case getreg(bt) of
  0: result:='ax';
  1: result:='cx';
  2: result:='dx';
  3: result:='bx';
  4: result:='sp';
  5: result:='bp';
  6: result:='si';
  7: result:='di';
  end;
end;

function r32(bt:byte): string;
begin
  case getreg(bt) of
    0: result:='eax';
    1: result:='ecx';
    2: result:='edx';
    3: result:='ebx';
    4: result:='esp';
    5: result:='ebp';
    6: result:='esi';
    7: result:='edi';
  end;

end;

function xmm(bt:byte): string;
begin
  case getreg(bt) of
  0: result:='XMM0';
  1: result:='XMM1';
  2: result:='XMM2';
  3: result:='XMM3';
  4: result:='XMM4';
  5: result:='XMM5';
  6: result:='XMM6';
  7: result:='XMM7';
  end;
end;

function mm(bt:byte): string;
begin
  case getreg(bt) of
  0: result:='MM0';
  1: result:='MM1';
  2: result:='MM2';
  3: result:='MM3';
  4: result:='MM4';
  5: result:='MM5';
  6: result:='MM6';
  7: result:='MM7';
  end;
end;

function sreg(bt:byte): string;
begin
  case getreg(bt) of
  0: result:='ES';
  1: result:='CS';
  2: result:='SS';
  3: result:='DS';
  4: result:='FS';
  5: result:='GS';
  6: result:='HS';  //as if...
  7: result:='IS';
  end;
end;

function CR(bt:byte):string;
begin
  case getreg(bt) of
  0: result:='CR0';
  1: result:='CR1';
  2: result:='CR2';
  3: result:='CR3';
  4: result:='CR4';
  5: result:='CR5';
  6: result:='CR6';
  7: result:='CR7';
  end;
end;

function DR(bt:byte):string;
begin
  case getreg(bt) of
  0: result:='DR0';
  1: result:='DR1';
  2: result:='DR2';
  3: result:='DR3';
  4: result:='DR4';
  5: result:='DR5';
  6: result:='DR6';
  7: result:='DR7';
  end;
end;



function GetBitOf(Bt: dword; bit: integer): byte;
begin
  bt:=bt shl (31-bit);
  result:=bt shr 31;
//  result:=(bt shl (7-bit)) shr 7;  //can someone explain why this isn't working ?
end;

function getsegmentoverride(prefix: TPrefix): string;
begin
  if $2e in prefix then result:='CS:' else
  if $26 in prefix then result:='ES:' else
  if $36 in prefix then result:='SS:' else
  if $3e in prefix then result:='' else
  if $64 in prefix then result:='FS:' else
  if $65 in prefix then result:='GS:';
end;

function getmod(bt: byte): byte;
begin
  result:=(bt shr 6) and 3;
end;

function getRM(bt: byte): byte;
begin
  result:=bt and 7;
end;

function getREG(bt: byte): byte;
begin
  result:=(bt shr 3) and 7;
end;


function MODRM2(memory:TMemory; prefix: TPrefix; modrmbyte: integer; inst: integer; var last: dword): string;
var dwordptr: ^dword;
begin

  dwordptr:=@memory[modrmbyte+1];
  last:=modrmbyte+1;


  if $67 in prefix then
  begin
    // put some 16-bit stuff in here
    // but since this is a 32-bit debugger only ,forget it...

  end
  else
  begin
    case getmod(memory[modrmbyte]) of
      0:  case getrm(memory[modrmbyte]) of
            0:  result:=getsegmentoverride(prefix)+'[EAX],';
            1:  result:=getsegmentoverride(prefix)+'[ECX],';
            2:  result:=getsegmentoverride(prefix)+'[EDX],';
            3:  result:=getsegmentoverride(prefix)+'[EBX],';
            4:  result:=getsegmentoverride(prefix)+'['+sib(memory,modrmbyte+1,last)+'],';
            5:  begin
                  result:=getsegmentoverride(prefix)+'['+inttohexs(dwordptr^,8)+'],';
                  last:=last+4;
                end;
            6:  result:=getsegmentoverride(prefix)+'[ESI],';
            7:  result:=getsegmentoverride(prefix)+'[EDI],';
          end;

      1:  begin
            case getrm(memory[modrmbyte]) of
              0:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[EAX+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[EAX-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              1:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[ECX+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[ECX-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              2:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[EDX+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[EDX-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              3:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[EBX+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[EBX-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              4:  begin
                    result:=getsegmentoverride(prefix)+'['+sib(memory,modrmbyte+1,last);
                    if memory[last]<=$7F then
                      result:=result+'+'+inttohexs(memory[last],2)+'],'
                    else
                      result:=result+'-'+inttohexs($100-memory[last],2)+'],';
                  end;
              5:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[EBP+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[EBP-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              6:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[ESI+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[ESI-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
              7:  if memory[modrmbyte+1]<=$7F then
                  result:=getsegmentoverride(prefix)+'[EDI+'+inttohexs(memory[modrmbyte+1],2)+'],' else
                  result:=getsegmentoverride(prefix)+'[EDI-'+inttohexs($100-memory[modrmbyte+1],2)+'],';
            end;
            inc(last);
          end;

      2:  begin
            case getrm(memory[modrmbyte]) of
              0:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[EAX+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[EAX-'+inttohexs($100000000-dwordptr^,8)+'],';
              1:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[ECX+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[ECX-'+inttohexs($100000000-dwordptr^,8)+'],';
              2:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[EDX+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[EDX-'+inttohexs($100000000-dwordptr^,8)+'],';
              3:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[EBX+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[EBX-'+inttohexs($100000000-dwordptr^,8)+'],';
              4:  begin
                    result:=getsegmentoverride(prefix)+'['+sib(memory,modrmbyte+1,last);
                    dwordptr:=@memory[last];
                    if dwordptr^ <=$7FFFFFFF then
                      result:=result+'+'+inttohexs(dwordptr^,8)+'],' else
                      result:=result+'+'+inttohexs($100000000-dwordptr^,8)+'],';

                  end;
              5:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[EBP+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[EBP-'+inttohexs($100000000-dwordptr^,8)+'],';
              6:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[ESI+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[ESI-'+inttohexs($100000000-dwordptr^,8)+'],';
              7:  if dwordptr^ <=$7FFFFFFF then
                  result:=getsegmentoverride(prefix)+'[EDI+'+inttohexs(dwordptr^,8)+'],' else
                  result:=getsegmentoverride(prefix)+'[EDI-'+inttohexs($100000000-dwordptr^,8)+'],';
            end;
            inc(last,4);
          end;

      3:  begin
            case getrm(memory[modrmbyte]) of
              0:  case inst of
                    0: result:='EAX,';
                    1: result:='AX,';
                    2: result:='AL,';
                    3: result:='MM0,';
                    4: result:='XMM0,';
                  end;

              1:  case inst of
                    0: result:='ECX,';
                    1: result:='CX,';
                    2: result:='CL,';
                    3: result:='MM1,';
                    4: result:='XMM1,';
                  end;

              2:  case inst of
                    0: result:='EDX,';
                    1: result:='DX,';
                    2: result:='DL,';
                    3: result:='MM2,';
                    4: result:='XMM2,';
                  end;

              3:  case inst of
                    0: result:='EBX,';
                    1: result:='BX,';
                    2: result:='BL,';
                    3: result:='MM3,';
                    4: result:='XMM3,';
                  end;

              4:  case inst of
                    0: result:='ESP,';
                    1: result:='SP,';
                    2: result:='AH,';
                    3: result:='MM4,';
                    4: result:='XMM4,';
                  end;

              5:  case inst of
                    0: result:='EBP,';
                    1: result:='BP,';
                    2: result:='CH,';
                    3: result:='MM5,';
                    4: result:='XMM5,';
                  end;

              6:  case inst of
                    0: result:='ESI,';
                    1: result:='SI,';
                    2: result:='DH,';
                    3: result:='MM6,';
                    4: result:='XMM6,';
                  end;

              7:  case inst of
                    0: result:='EDI,';
                    1: result:='DI,';
                    2: result:='BH,';
                    3: result:='MM7,';
                    4: result:='XMM7,';
                  end;
            end;
          end;
    end;

  end;

end;


function MODRM(memory:TMemory; prefix: TPrefix; modrmbyte: integer; inst: integer; var last: dword): string; overload;
begin
  result:=modrm2(memory,prefix,modrmbyte,inst,last);
end;

function MODRM(memory:TMemory; prefix: TPrefix; modrmbyte: integer; inst: integer; var last: dword;opperandsize:integer): string; overload;
begin
  result:=modrm2(memory,prefix,modrmbyte,inst,last);
  if (length(result)>0) and (result[1]='[') then
  begin
    case opperandsize of
     8 : result:='byte ptr '+result;
     16: result:='word ptr '+result;
     32: result:='dword ptr '+result;
     64: result:='qword ptr '+result;
     80: result:='tword ptr '+result;
     128: result:='dqword ptr '+result;
    end;
  end;
end;

function SIB(memory:TMemory; sibbyte: integer; var last: dword): string;
var dwordptr: ^dword;
begin
  case memory[sibbyte] of
   $00 : begin
           result:='EAX+EAX';
           last:=sibbyte+1;
         end;

   $01 : begin
           result:='ECX+EAX';
           last:=sibbyte+1;
         end;

   $02 : begin
           result:='EDX+EAX';
           last:=sibbyte+1;
         end;

   $03 : begin
           result:='EBX+EAX';
           last:=sibbyte+1;
         end;

   $04 : begin
           result:='ESP+EAX';
           last:=sibbyte+1;
         end;

   $05 : begin
            dwordptr:=@memory[sibbyte+1];
            case getmod(memory[sibbyte-1]) of
              0 : begin
                    last:=sibbyte+5;
                    result:='EAX+'+inttohexs(dwordptr^,8);
                  end;

              1 : begin
                    last:=sibbyte+1;
                    result:='EBP+EAX';
                  end;

              2 : begin
                    last:=sibbyte+1;
                    result:='EBP+EAX';
                  end;

              3 : begin
                    result:='error';
                  end;
            end;
         end;

   $06 : begin
           result:='ESI+EAX';
           last:=sibbyte+1;
         end;

   $07 : begin
           result:='EDI+EAX';
           last:=sibbyte+1;
         end;
      //--------------
   $08 : begin
           result:='EAX+ECX';
           last:=sibbyte+1;
         end;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美成人午夜| 免费亚洲电影在线| 国产精品卡一卡二| 国产精品午夜电影| 国产午夜一区二区三区| 欧美精品一区二区三区一线天视频| 欧美肥胖老妇做爰| 欧美一区二区日韩一区二区| 91精品国产丝袜白色高跟鞋| 717成人午夜免费福利电影| 欧美福利一区二区| 日韩精品一区二区三区四区视频 | 国产美女在线精品| 精油按摩中文字幕久久| 精品在线视频一区| 国产不卡在线播放| 91麻豆自制传媒国产之光| 91麻豆免费观看| 欧美日韩国产影片| 欧美一区二区三区思思人| 精品福利视频一区二区三区| 欧美精品一区二区三区很污很色的| 久久精品亚洲精品国产欧美 | 欧美激情一区二区在线| 国产精品人成在线观看免费| 亚洲图片另类小说| 亚洲国产精品一区二区www在线| 三级欧美在线一区| 国产精品99久久久久久似苏梦涵 | 一区二区免费在线播放| 日韩精品高清不卡| 国产一区二区调教| av电影在线观看一区| 色一情一乱一乱一91av| 91精品国产全国免费观看| 久久亚洲精品国产精品紫薇| 亚洲欧洲一区二区在线播放| 婷婷丁香久久五月婷婷| 国产精品主播直播| 色系网站成人免费| 日韩精品影音先锋| 亚洲丝袜精品丝袜在线| 美女网站色91| 成人av网站在线| 欧美一级视频精品观看| 国产精品乱人伦一区二区| 午夜国产精品影院在线观看| 国产成人综合亚洲91猫咪| 91国内精品野花午夜精品| 欧美精品一区二区蜜臀亚洲| 亚洲精品乱码久久久久久黑人 | 欧美丰满高潮xxxx喷水动漫| 国产亚洲成av人在线观看导航| 夜夜夜精品看看| 国产精品一二三区| 欧美性生活大片视频| 国产日产欧美一区| 视频一区二区中文字幕| 99精品视频一区| 欧美va天堂va视频va在线| 一区二区激情视频| 国产成人免费在线观看| 在线成人av影院| 亚洲欧洲日韩av| 久久成人免费网站| 欧美三级在线视频| 国产精品久久久久久久久免费樱桃| 日韩在线一区二区| 色噜噜狠狠成人中文综合| 久久亚洲一区二区三区明星换脸 | 国产精品综合一区二区| 欧美麻豆精品久久久久久| 日韩一区在线播放| 国产在线国偷精品免费看| 3atv一区二区三区| 一区二区三区在线观看动漫| 成人综合婷婷国产精品久久| 日韩一卡二卡三卡国产欧美| 亚洲国产中文字幕| 99久久综合99久久综合网站| 国产午夜精品一区二区三区嫩草 | 日韩二区三区在线观看| 91蜜桃在线观看| 国产精品人妖ts系列视频| 精品一区二区三区久久| 91精品国产麻豆| 亚洲自拍偷拍av| 91麻豆蜜桃一区二区三区| 国产精品对白交换视频| 国产成人免费视| 久久综合久久综合九色| 久久精品国产亚洲a| 91精品国产色综合久久ai换脸| 亚洲综合一区二区| 在线亚洲精品福利网址导航| 亚洲欧美日韩精品久久久久| 成人激情动漫在线观看| 国产亲近乱来精品视频| 国产成人久久精品77777最新版本| 久久一夜天堂av一区二区三区| 老司机午夜精品99久久| 欧美一区二区三区系列电影| 日韩中文字幕不卡| 91精品免费在线| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区二区网站| 欧美aⅴ一区二区三区视频| 宅男在线国产精品| 久久精品久久久精品美女| 精品国产一二三区| 国产麻豆视频一区二区| 国产欧美一区二区三区在线老狼| 国产成人8x视频一区二区| 中文字幕不卡在线播放| 波多野结衣中文字幕一区二区三区 | 日韩一区二区三区电影在线观看| 日韩二区三区在线观看| 欧美不卡在线视频| 国产精品正在播放| 国产欧美一区二区精品仙草咪| 成人黄色av网站在线| 亚洲品质自拍视频| 欧美色图一区二区三区| 免费欧美高清视频| 久久色在线观看| 99久久99久久免费精品蜜臀| 一区二区三区小说| 欧美精品 日韩| 国产在线一区二区| 中国色在线观看另类| 色国产综合视频| 首页亚洲欧美制服丝腿| 久久视频一区二区| 91麻豆swag| 午夜精品久久久久久不卡8050| 日韩美女视频一区二区在线观看| 国产精品一二三四五| 一区二区三区日韩精品| 日韩一级完整毛片| 波多野结衣中文字幕一区| 亚洲国产精品精华液网站| 精品国产a毛片| 91啪九色porn原创视频在线观看| 同产精品九九九| 久久视频一区二区| 91国偷自产一区二区开放时间| 日本女优在线视频一区二区| 国产午夜精品一区二区三区四区| 日本道精品一区二区三区| 欧美aⅴ一区二区三区视频| 国产精品福利av| 欧美一区二区三区男人的天堂| 国产风韵犹存在线视精品| 亚洲自拍偷拍麻豆| 欧美国产一区在线| 5566中文字幕一区二区电影| 成人午夜av影视| 奇米色一区二区| 亚洲你懂的在线视频| 欧美精品一区二区三区一线天视频 | 久久电影网站中文字幕| 亚洲乱码国产乱码精品精可以看 | 在线观看亚洲专区| 国产一区二区美女| 亚洲一区二区三区中文字幕| 国产欧美一区二区在线| 91精品国产入口在线| 色诱亚洲精品久久久久久| 国产在线播精品第三| 午夜激情综合网| 亚洲男人天堂一区| 国产调教视频一区| 日韩三级精品电影久久久| 99精品视频在线观看免费| 国产在线精品国自产拍免费| 日韩精品亚洲专区| 樱桃国产成人精品视频| 日本一区二区成人| 日韩三级电影网址| 成人手机在线视频| 日韩一级高清毛片| 色婷婷亚洲精品| 盗摄精品av一区二区三区| 日本午夜一本久久久综合| 亚洲精品日产精品乱码不卡| 久久久国产精华| 精品国产乱码久久久久久老虎| 欧美视频完全免费看| 色综合一区二区三区| 国产盗摄视频一区二区三区| 捆绑变态av一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲欧洲制服丝袜| 国产精品福利影院| 欧美激情在线一区二区| 久久久精品蜜桃| 精品国产99国产精品| 日韩精品一区二区三区四区| 91精品福利在线一区二区三区 | 精品国偷自产国产一区|