cvi调用其他exe_怎么用exe调用另一个exe里函数,像调用dll那样

#1

得分:5

回复于:

2010-07-06 23:12:07

以下代码来自看雪论坛

[code]

前两天想搞出一个游戏的封包解密函数,又懒怕还原成高级语言 想直接调用他EXE内部的解密函数,

本来记得PEDIY的有篇文章是增加节来导出内部函数的,但是找不到那篇文章了;所以就开始自己尝试一下,现在以自己写的一个EXE为类型

先写一个EXE程序

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure DoPub;//内部函数 等待导出

begin

MessageBox(0, 'Test', 'Test', MB_OK);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

MessageBox(0, 'Test', 'Test', MB_OK);

end;

end.

上面编译成成 hook32.exe 名字为Hook没什么意思 只是个人习惯 跟钩子没关联 呵呵

然后用OD载入我们的程序 下段BP MessageBoxA 按 按钮运行 断下 执行到返回

00456498 >/$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL

0045649A |. 68 AC644500 PUSH hook32.004564AC ; |Title = "Test"

0045649F |. 68 AC644500 PUSH hook32.004564AC ; |Text = "Test"

004564A4 |. 6A 00 PUSH 0 ; |hOwner = NULL

004564A6 |. E8 A509FBFF CALL ; \MessageBoxA

004564AB \. C3 RETN

得知我们的内部函数地址为 00456498 这里我就偷懒啦 用LORDPE的文件计算器

计算 RVA=00056498

Offset=00055898

好了现在来修改导出表,再次偷懒 不加新节啦,WinHex打开文件 直接找个程序空白的地方

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值