引擎下载地址:http://www.3800hk.com/Soft/zhly/28969.html
调用方式:uses AsmServ, DisAsm,procedure xxxxx();
var
  da                          : TDisAsm;
begin
  ideal := True; islowercase := False; putdefseg := 1;    da.Result := '';
    da.Dump := '';
    DisasmCode(#$81#$05#$E0#$5A#$47#$00#$01#$00#$00#$00#$11#$22#$33#$44#$55#$66,
      11, $400000, @da, DISASM_CODE);  ShowMessage(Format('%.24s    %.24s', [da.Dump, da.Result]));
end;
但我发现函数返回回来的只有一句,并没有全部反汇编完请哪位大哥能帮忙写个DEMO。
选择一个文件以后,将指定一个地址,指定一个大小的数据反汇编完进行返回,谢谢了。

解决方案 »

  1.   

    procedure xxxxx();
    var
      da: TDisAsm;  p: Pchar;
      s :string;
    begin
      ideal := True; islowercase := False; putdefseg := 1;    da.Result := '';
        da.Dump := '';    p := #$81#$05#$E0#$5A#$47#$00#$00#$00#$81#$05#$E0#$5A#$47#$01#$01#$01;    while p<>NIL do
        begin
          DisasmCode(p,
            11, $400000, @da, DISASM_CODE);
          if da.FixupSize=0 then
            break;
          s := s + Format('%.24s    %.24s', [da.Dump, da.Result]) + #13#10;
          p := @p[da.FixupSize];
        end;  ShowMessage(s);
    end;似乎每一次调用DisasmCode,只返回第一句汇编代码
    要多次调用该函数