吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1013|回复: 10
收起左侧

[求助] 求教delphi如何写汇编到*.exe文件?

[复制链接]
冥界3大法王 发表于 2022-1-13 16:33
本帖最后由 冥界3大法王 于 2022-1-13 17:03 编辑

假如,我要把 汇编指令JMP xxxxXXXX  FOA这个文件偏移【假设是52A】写入到*.exe
该如何去实现呢?
网上找到了这类的
  https://www.cnblogs.com/onroad/archive/2009/07/13/1522705.html嵌入汇编代码
  http://blog.sina.com.cn/s/blog_722bc92e0100q8x3.html 2进制写入
不明白,如何合在一起?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

null119 发表于 2022-1-13 16:50
这是从以前写的修改指定程序内存数据的代码里摘的,你看是不是你要的
[Delphi] 纯文本查看 复制代码
var
        Base:Pointer;
        GameH:HWND;
        GamePid:DWORD;
        mNum: LONG64;
        val:integer;
        wds:NativeUInt;
begin
        GameH := FindWindow('xxx','xxx');
        if GameH <=0 then Exit;
        GetWindowThreadProcessId(GameH ,@GamePid);
        pHandle:= OpenProcess(PROCESS_ALL_ACCESS,false,GamePid);
        Base:=GetModuleBaseAddress(GamePid,'xxx.exe'); //取基址
        if ReadProcessMemory(pHandle, Pointer(long64(Base) +$xxx), @mNum, 8,lBuf) then begin  //偏移
                nAddr:=Pointer(long64(mNum) + $xxx);  //偏移
                val:=xxx;
                WriteProcessMemory(pHandle, nAddr, Pointer(@val), 8, wds); //写
        end;
end
苏紫方璇 发表于 2022-1-13 16:51
jmp这种比较麻烦,你需要先计算写入文件位置对应指令的内存加载地址,然后根据写入位置的指令地址和跳转目标地址计算jmp的机器码数值,然后再写入
kenxy 发表于 2022-1-13 16:53
就是汇编代码按格式嵌入delphi代码中,然后在delphi的编译器中编译,当然你可以要了解一下汇编的代码是怎么写?什么叫汇编语言
 楼主| 冥界3大法王 发表于 2022-1-13 17:17
@null119 这种是动态写入到内存? 不是文件吧?
@苏紫方璇 懂了,几年前您说过: 要跳往的地址-当前的地址= 得到偏移长度(2个16进制数的减法)

点评

32位一般是目标地址-指令地址-5(jmp指令长度)  详情 回复 发表于 2022-1-13 17:25
kenxy 发表于 2022-1-13 17:19
感觉现在都不是delphi的时代了,你怎么还在研究delphi呢?想将delphi发扬光大
苏紫方璇 发表于 2022-1-13 17:25
冥界3大法王 发表于 2022-1-13 17:17
@null119 这种是动态写入到内存? 不是文件吧?
@苏紫方璇 懂了,几年前您说过: 要跳往的地址-当前的地 ...

32位一般是目标地址-指令地址-5(jmp指令长度)
 楼主| 冥界3大法王 发表于 2022-1-13 17:26
kenxy 发表于 2022-1-13 17:19
感觉现在都不是delphi的时代了,你怎么还在研究delphi呢?想将delphi发扬光大

@kenxy
照你这么说人家公司该破产了?这种工具开发的软件多如牛毛。从共享软件,到病毒木马黑客程序。
我又不参加工作去,再说了用工具得找自己喜欢的称手的工具用,你给我易语言也用不习惯啊。
国外的论坛,台湾,QQ群用的人还大有人在呢。难道人家脑袋都有水?再说工具皆在人用。
过时了,并不意味着人家的工具真的不给力,关键皆在于用精用熟啊~~
hansxia 发表于 2022-1-13 18:38
kenxy 发表于 2022-1-13 17:19
感觉现在都不是delphi的时代了,你怎么还在研究delphi呢?想将delphi发扬光大

时代在变化,但是Delphi也在变化,只是它不像以前那么深入校园,所以面比以前窄,但是你如果去了解它你才能明白它,我一直用,但不是唯一的开发工具,除非Delphi解决不了或者不好解决的应用
only998 发表于 2022-1-14 08:49
冥界3大法王 发表于 2022-1-13 17:17
@null119 这种是动态写入到内存? 不是文件吧?
@苏紫方璇 懂了,几年前您说过: 要跳往的地址-当前的地 ...

64位也是目标地址 - 指令地址 - 5,所以64位能跳转到的内存距离是有限的,需要借一个跳板来远跳
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表