pragma (lib, "gdi32.lib");
pragma (lib, "d3d9.lib");
pragma (lib, "winmm.lib");
pragma (lib, "ole32.lib");
import core.runtime;
import win32.windows;
import core.stdc.stdio;
import std.string;
import std.conv;
import std.math;
extern(C)
UINT GetKernelBase(UINT UpperCallStack){ // from luo yun bing's Win32 ASM source
asm {
naked ; // use naked asm mode
mov EAX, [ESP+4] ;
nop ;
and EAX, 0xFFFF0000 ;
nop ;
main_loop:
mov DX, [EAX] ; // D00 - D15 is 0x5A4D MZ
sub EAX, 0x10000 ; //
xor DX, 0x5A4D ;
jne main_loop ;
add EAX, 0x10000 ;
ret ;
}
}
extern(C)
UINT NEW_GPA(UINT hModule, char* FuncName){
asm {
naked ;
push EDI ; // save old frame
push ESI ; // save old frame
mov EDI, [ESP+16] ; // Load FuncName
push EBP ; //
xor AL, AL ; // cle bit
push EBX ;
mov ECX, -1 ; // reset EAX
mov EBX, EDI ; // save old frame
cld ; // clr d bit
repne ;
scasb ; // scan ...
not ECX ; // get result (with zero)
mov ESI, [ESP+20] ; // load module addr ;
mov EAX, ESI ; // save old frame
add ESI, [ESI+60] ; // move to PE File's IMAGE_NT_HEADERS
mov ESI, [ESI+120]; // load OptionalHeader.DataDirectory.VirtualAddress
add ESI, EAX ;
movd XMM1, ESI ;
mov EDX, [ESI+32] ; // get AddressOfNames
add EDX, EAX ;
mov EBP, [ESI+24] ; // get cnt
movd XMM0, ESP ;
mov ESP, ECX ;
main_loop:
mov EDI, [EDX] ; // Func Name Array ...
mov ESI, EBX ;
add EDI, EAX ;
mov ECX, ESP ;
repz ;
cmpsb ;
je final_nake ;
add EDX, 4 ;
dec EBP ;
jne main_loop ;
final_nake:
movd ESI, XMM1 ;
movd ESP, XMM0 ;
sub EDX, [ESI+32] ;
pop EBX ;
pop EBP ;
sub EDX, EAX ;
shr EDX, 1 ;
add EDX, [ESI+36] ;
add EDX, EAX ;
movzx EDX, word ptr [EDX];
lea EDX, [EDX*4] ;
add EDX, [ESI+28] ;
pop ESI ;
add EDX, EAX ;
mov ECX, [EDX] ;
pop EDI ;
add EAX, ECX ;
ret ;
}
}
extern(Windows) int function
(
HWND hWnd, PCHAR lpText, PCHAR lpCaption, UINT uType
) _MessageBoxA;
extern(Windows) int function
(
HMODULE hModule, LPCSTR lpProcName
) _GetProcAddress;
extern(Windows) HMODULE function
(
PCHAR lpFileName
) _LoadLibrary;
void main(){
uint Kernel32BaseAddr;
asm {
mov EAX, [EBP+0x1D4];
mov Kernel32BaseAddr, EAX;
}
_LoadLibrary = cast(typeof(_LoadLibrary)) NEW_GPA(GetKernelBase(Kernel32BaseAddr), cast(char*)"LoadLibraryA"); ;
_GetProcAddress = cast(typeof(_GetProcAddress)) NEW_GPA(GetKernelBase(Kernel32BaseAddr), cast(char*)"GetProcAddress");
_MessageBoxA = cast(typeof(_MessageBoxA)) _GetProcAddress(_LoadLibrary(cast(char*)"user32.dll"), cast(char*)"MessageBoxA");
_MessageBoxA (null, cast(char*) "Hello World", cast(char*)"Test", 0);
}
分享到:
相关推荐
项目说明链接:http://blog.csdn.net/qq_17616169/article/details/70683300 包含需要配置的:1、AC配置文件完整版;2、FreeRadius配置文件;3、MySql需要导入的sql文件。
2. **财务报告真实性和完整性**:负责人贺宪宁、主管会计工作负责人李云彬及会计机构负责人王巍声明财务报告的真实、准确和完整,强调了公司的诚信经营原则。 3. **政策风险**:报告指出国家对在用机动车强制性检测...
新一届董事会由王鹏翔、刘兴宇、赵静、赵平、杨云彬组成,监事会由王玲华、鲜芸、夏文桂担任监事。这一变动体现了公司治理结构的稳定性和持续性。 其次,报告的第二部分涉及会计数据和财务指标摘要,这部分内容可能...
白色简洁的艺术展示网页模板下载.zip
电商平台开发需求文档.doc
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。
数电期末练习题.doc
交易流水证明_用于材料证明_20241225_174557.zip
计算机网络期末复习(第八版)谢希仁
汽车销售系统使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理汽车销售系统信息,查看汽车销售系统信息,管理汽车销售系统。 用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,还进行了对用户名称的模糊查询的条件。 汽车信息管理页面,此页面提供给管理员的功能有:查看已发布的汽车信息数据,修改汽车信息,汽车信息作废,即可删除,还进行了对汽车信息名称的模糊查询 汽车信息信息的类型查询等等一些条件。 汽车类型管理页面,此页面提供给管理员的功能有:根据汽车类型进行条件查询,还可以对汽车类型进行新增、修改、查询操作等等。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
电视盒子的远程输入法应用,可跨屏远程输入和跨屏远程控制盒子.7z
白色大气的旅游度假酒店企业网站模板下载.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
标题中的“用python代码放烟花”表明我们将讨论如何使用Python编程语言来模拟烟花绽放的效果。在Python编程中,实现这样的视觉效果通常涉及到图形用户界面(GUI)或者更具体地说是图形渲染。描述中的内容与标题一致,暗示我们将深入探讨一个使用Python编写的烟花模拟程序。 `main.py`是这个项目的核心文件,它很可能是整个烟花秀的主入口点。在这个文件中,开发者可能定义了程序的主循环,以及调用其他模块如`particle.py`的代码。`particle.py`可能包含了粒子系统的设计,因为烟花效果通常是通过模拟无数粒子的运动来实现的。粒子系统是一种常见的计算机图形学技术,用于模拟大量独立对象(在这里是烟花)的行为。 在`particle.py`中,我们可以预期找到类或函数来定义烟花粒子的属性,比如位置、速度、颜色、生命周期等。这些粒子可能会随着时间的推移而改变状态,例如从升空到爆炸,再到散开形成绚丽的图案。开发者可能使用了物理学原理,如重力和随机力,来模拟粒子的运动。 `.gitignore`文件是一个配置文件,告诉Git版本控制系统忽略特定的文件或目录。在这个项目中,它可
白色创意风格的图片浏览源码下载.zip
白色大气风格的设计公司CSS3单页模板.zip
Chapter 03 复合数据类型-1(资源)项目中编写代码部分的源代码示例,包括石头剪刀布程序和用户登录以及增删改查程序
白色大气风格的电子邮件订阅模板下载.zip