Delphi_检查exe文件是否是"随机基址"
ZC: cnpack 还是蛮好用的
1、代码:
procedure TForm1.btnRandomizedBaseAddressClick(Sender: TObject);
var pDosHdr :PImageDosHeader;
pNtHdrs :PImageNtHeaders;
pNtFileHdr :PImageFileHeader;
ms :TMemoryStream;
lbRelocsStripped :LongBool;// IMAGE_FILE_RELOCS_STRIPPED;
strExe, strExe2 :string;
begin
strExe := Trim(edtSelectFile01.Text);
//ShowMessage(ExtractFilePath(strExe));
//ShowMessage(ExtractFileName(strExe));
//Exit;
strExe2 := ExtractFilePath(strExe)+'ZZ_'+ExtractFileName(strExe); ms := TMemoryStream.Create;
try
ms.LoadFromFile(strExe); pDosHdr := ms.Memory;
pNtHdrs := PImageNtHeaders(DWORD(ms.Memory) + pDosHdr._lfanew);
if pNtHdrs.Signature <> $ then // PE
ShowMessage('不是PE文件')
else
begin
pNtFileHdr := @pNtHdrs.FileHeader;
lbRelocsStripped := LongBool(pNtFileHdr.Characteristics and $);
if lbRelocsStripped then
ShowMessage('固定基址')
else
begin
if MessageBox(Self.Handle, '是否修改为固定基址?', '随机基址', MB_YESNO)=IDYES then
begin
pNtFileHdr.Characteristics := pNtFileHdr.Characteristics or $;
ms.SaveToFile(strExe2);
ShowMessage('随机基址 改为 固定基址 ==> 操作完成');
end;
end;
end;
finally
ms.Free;
end;
end;
2、
Delphi_检查exe文件是否是"随机基址"的更多相关文章
- 检查EXE、DLL、SYS等文件是32位还是64位的
非.NET文件用:dumpbin.exe /headers file.exe(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin) . ...
- 检查DLL,EXE文件是64位或者32位的方法
检查DLL,EXE文件是64位或者32位:输入corflags <assembly path>:
- 随机点名可视化界面,记录迟到人员,转exe文件
随机点名可视化界面,记录迟到人员,转exe文件 一.介绍 对于人员采取随机点名 二.代码 import datetime import random from tkinter import * fro ...
- 手工脱壳之AsPack压缩脱壳-随机基址
一.工具及壳介绍二.脱壳1.ESP定律脱壳2.单步跟踪脱壳3.基址重定位的修复 一.工具及壳介绍 使用工具:Ollydbg.PEID.ImportREC.LoadPE.010 Editor 查看待脱壳 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- JDK/bin目录下的不同exe文件的用途(转)
新安装完JDk 大家是否发现安装目录的bin文件夹有很多exe文件 下面就为大家讲解不同exe文件的用途 javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件 ...
- 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)
在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...
- 【转载】将python脚本打包成exe文件
exe文件也就是可以直接执行的文件.通常我们编好的带py后缀的脚本文件都是需要在有python的环境下执 行,每次通过Win + R打开运行窗口再输入powershell打开控制台,再千辛万苦地cd ...
- Linux显示检查设置文件中的语法是否正确
Linux显示检查设置文件中的语法是否正确 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ apachectl [conflgtest] 程序"apa ...
随机推荐
- 关于jquery的取消阻止默认事件
最近帮朋友做个东西,整个屏幕有一个遮罩层,但是这个遮罩层能滑动,于是百度了一下,返现,用 $('body').bind("touchmove",function(e){ e.pre ...
- 使用JDT转java代码为AST
maven依赖 <dependency> <groupId>org.eclipse.jdt</groupId> <artifactId>org.ecli ...
- Java语言实现简单FTP软件------>FTP协议分析(一)
FTP(File Transfer Protocol)就是文件传输协议.通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将本地计算机上的文件复制到远程FTP服务器上称为上传,上传和下 ...
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析
首先,我们先来分析一下源码: frameworks/base/cmds/bootanimation/BootAnimation.cpp 首先看一下定义的常量: BootAnimation::ready ...
- 001 unique string
以后坚持每一个星期都写记到算法题,不论简单还是难,纯熟娱乐! 描写叙述: 实现一个算法来推断一个字符串中的字符是否唯一(即没有反复).不能使用额外的数据结构. (即仅仅使用主要的数据结构) 代码: # ...
- 2、hive的基本操作
1.创建数据库和表 1)创建数据库 hive> CREATE DATABASE IF NOT EXISTS userdb; OK Time taken: 0.252 seconds hive&g ...
- where VS having
where 和 having 的区别: WHERE 子句不能包含聚集函数: 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的.相反,HAVING 子句总是包含聚集函数 hav ...
- F110操作手册-自动付款
SAP 系统 F110系统操作手册 目 录 1.自动付款... 3 1.自动付款 事务代号: F110 菜单路径: 会计 →财 ...
- redis设置密码后的重启问题
Redis 设置密码登陆后使用 /etc/init.d/redis_6379 restart会出现:[root@8183539155d2 /]# /etc/init.d/redis_6379 rest ...
- outlook 设置分类收邮件
打开outlook,工具---->“规则和通知”.建相应的规则即可.