如何让程序运行每次运行时函数或变量的地址随机变化? ( 积分: 100 )

  • 主题发起人 主题发起人 hesc
  • 开始时间 开始时间
您想干什么涅?
 
这个...不成吧,编译器会在编译的时候定位函数位置的。
 
那有没有办法让其它人读不到我的程序内存里的数据?
 
局部变量都是在堆里分配的 是动态的,每次都不一样![:D][:D]
类也是在堆里的,因此也可以!把函数放在类里就ok了!!
 
局部变量都是在堆里分配的 是动态的?????????
类也是在堆里的,因此也可以?????????
你到调试器里去看看,启动两次程序,同一个临时变量和函数的地址是不是在同一个位置?
类似在栈里的,程序启动就已经装载,对象才是在堆里
 
New, VirutalAlloc
 
function TForm1.QueryAddr(Proc: TNotifyEvent): DWord;
begin
Result := Integer(@Proc);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a: Integer;
begin
ShowMessage(IntToHex(Integer(@a), 8));
ShowMessage(IntToHex(Integer(QueryAddr(Button1Click)), 8));
end;
 
to yinju
如果找到程序的入口地址,那么加上偏移量一样能找到变量的值
 
to-hesc
我并没有回答你的问题,只是反驳menzhe的说法
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
后退
顶部