惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Vercel News
Vercel News
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
H
Help Net Security
罗磊的独立博客
The Cloudflare Blog
J
Java Code Geeks
博客园 - 叶小钗
I
InfoQ
B
Blog
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
月光博客
月光博客
博客园_首页
雷峰网
雷峰网
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
美团技术团队
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美

博客园 - 汇编工具视频笔记教程

那你再查一下View==> Source这一功能的实现:是如何调用源码一起来调试的? 如何让QT工程回到未编译前的样子?需要删除哪些文件夹? X64dbg中minidump文件夹的用途 x64dbg这个文件夹memdumps有啥用? cnpack卸载不干净,Delphi 11.1启动报错时的解决 Delphi 11.1 强行安装修改【一键中英文助手】版本号失败后的解决: 法王八强版x64dbg 存档 流程图 Delphi程序,已知机器码是:558BEC 要求反转为: EC8B55 delphi反转机器码的实现: delphi剪贴板类型 解决cnpack不正常使用的键值 x64dbg构建时正确的返回信息 Delphi 10.4.2 topics.chm帮助文件中文版 Ollydbg_x36dbg贴心伴侣 8.88版2021-5-5号发布 Ollydbg/x32dbg/x64dbg贴心伴侣 Version 6.48使用详解 视频教程x32dbg_x64dbg命令脚本从入门到精通 Red Gate .NET Reflector 10.2.1.1800汉化版使用心得
写机器码改写EXE文件
汇编工具视频笔记教程 · 2022-01-11 · via 博客园 - 汇编工具视频笔记教程

版本1:

procedure TForm1.Button2Click(Sender: TObject);
var
  vFS: TFileStream;
  A1: Integer;
begin
  A1 := $07EB;                     //要写入的机器码
  ShowMessage(IntToStr(A1));       //变成了10进制的啦
  vFS := TFileStream.Create(sEdit1.Text, fmOpenReadWrite);
  try
    vFS.Position := $843;        //要写入的FOA(文件偏移地址)即在x64dbg中直接复制得到的那个无需转换!
    vFS.WriteBuffer(A1, Length(E2.Text) div 2);
  finally
    FreeAndNil(vFS);
  end;
end;

View Code

版本2:

procedure TForm1.cc1Click(Sender: TObject);
var
  vFS: TFileStream;
  a: TBytes;
begin
  vFS := TFileStream.Create(sEdit1.text, fmOpenReadWrite);
  try
    vFS.Position := $843; //后面这个赋值E1不会报错
    SetLength(a, Length(E2.Text) div 2);      //后面是写入的长度
    a[0] := $EB;          //后面这里转换成字节数组不会
    a[1] := $07;
    vFS.WriteBuffer(a[0], Length(a));         //a[0]指向首地址
  finally
    FreeAndNil(vFS);
  end;
end;

View Code

版本3:组合了(取编辑框字符串+拆分成字节码数组)

{好友巧妙的用了一个自定义函数完成转换!
不然直接调用就出错了!
}
function HexToInt(Value: string): Integer;
begin
  result := StrToInt('$' + Value);
end;


procedure TForm1.NewClick(Sender: TObject);
var
  vFS: TFileStream;
  A1: Integer;
begin
  A1 := HexToInt(E2.Text);            //要写入的机器码
//  ShowMessage(IntToStr(A1));       //变成了10进制的啦
  vFS := TFileStream.Create(sEdit1.Text, fmOpenReadWrite);
  try
    vFS.Position := HexToInt(E1.Text);        //要写入的FOA(文件偏移地址)即在x64dbg中直接复制得到的那个无需转换!
    vFS.WriteBuffer(A1, Length(E2.Text) div 2);
  finally
    FreeAndNil(vFS);
  end;
end;

View Code

拆分机器码:

procedure TForm1.sdsdClick(Sender: TObject);
var
  buf: array[0..100] of byte;
  str: string;
begin
  str := '07EB';
  Move(str[1], buf[0], 32);
  ShowMessageFmt('$%.2d, $%.2d, $%.2d, $%.2d', [buf[3], buf[2], buf[1], buf[0]]);
end;

View Code

采用EnigmaVirtualBox制作单文件便携版只是兴趣爱好,在WES7环境中制作,不保证全系统下正常,随缘随心随性。 温馨提醒建议在SandBoxie中测试https://www.lanzous.com/iatkifc