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. **政策风险**:报告指出国家对在用机动车强制性检测...
新一届董事会由王鹏翔、刘兴宇、赵静、赵平、杨云彬组成,监事会由王玲华、鲜芸、夏文桂担任监事。这一变动体现了公司治理结构的稳定性和持续性。 其次,报告的第二部分涉及会计数据和财务指标摘要,这部分内容可能...
基于Comsol的多物理场仿真:单相变压器绕组及铁芯振动形变分析模型,有限元仿真模型四:基于comsol的单相变压器绕组及铁芯振动形变仿真模型 1、单相变压器绕组振动形变模型:绕组在漏磁场的洛伦兹力作用下振动,在长期作用下发生位移形变 2、单相变压器铁芯振动形变模型:铁芯在磁致伸缩作用下发生振动形变 注:时域仿真可以设置观察点,导出随时间变化的变压器磁通、位移、压力、形变曲线 ,基于Comsol的仿真模型;单相变压器绕组振动形变;铁芯磁致伸缩形变;时域仿真观察点。,基于Comsol的变压器绕组铁芯振动形变仿真模型
基于Comsol的变压器热流耦合非等温流多物理场仿真计算模型,精准获取温度、速度及压力分布真实计算模型与服务,Comsol变压器热流耦合温度场仿真计算模型,采用温度场和流体场耦合非等温流多物理场进行计算,可以得到计算模型的温度、速度和压力分布,提供真实的计算模型和服务, ,核心关键词:Comsol变压器;热流耦合;温度场仿真;非等温流多物理场计算;温度、速度、压力分布;真实计算模型;服务。,COMSOL变压器多物理场耦合温度场仿真模型
基于改进MSR的小波变换图像增强算法.pdf
Comsol能带理论解析教程视频:深入理解电子结构与传输机制,Comsol能带理论教程视频 ,Comsol; 能带理论; 教程视频; 理论教程; 视频教程,Comsol能带理论教程视频:深度解析与应用实例
基于精准碰撞检测算法的机械臂避障轨迹规划.pdf
基于三菱PLC的组态王大小球分练系统设计与程序图纸说明文档,基于三菱 组态王PLC 大小球分练系统设计(程序图纸说明文档) ,基于三菱;组态王PLC;大小球分练系统设计;程序图纸说明文档。,三菱PLC驱动大小球分练系统设计程序图纸说明
国际象棋中马的周游路线问题新解法.pdf
COMSOL软件多物理场仿真教程:电热力耦合传热及微波加热优化实践,comsol软件教程,电热力耦合,动网格,传热,优化,微波加热,压电(非comsol官网搬运) comsol仿真教程,多物理场,建模仿真,低频电磁 ,comsol软件教程; 电热力耦合; 动网格; 传热; 优化; 微波加热; 压电; 多物理场; 建模仿真; 低频电磁,《Comsol软件教程:多物理场仿真与电热力耦合优化》
图书推荐系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
一类二阶欠驱动系统的自适应有限时间滑模控制.pdf
COMSOL锌沉积溶解模型的研究与应用,comsol锌沉积溶解模型 ,comsol;锌沉积;溶解模型;电化学模拟;物理化学过程。,COMSOL锌沉积溶解模型
电压电阻转换模块
蜀味道江湖餐饮管理系统小程序 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
外卖点餐系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
触宝输入法Go版_6.2.6.7.apk
"COMSOL六角蜂窝光子晶体高对称路径与K空间能带仿真研究:双模型出图与MATLAB脚本实现",comsol六角蜂窝光子晶体能带仿真 高对称路径+k空间,含两个仿真模型和一个k空间能带图出图matlab脚本 comsol光学仿真 ,comsol;六角蜂窝光子晶体;能带仿真;高对称路径;k空间;仿真模型;出图matlab脚本;comsol光学仿真,基于Comsol的光子晶体六角蜂窝结构能带仿真与k空间分析
C#标签打印控制程序源代码,自定义二次开发功能强大的条形码及二维码编辑系统,标签打印C#控制程序源代码,适合自己进行二次开发。 软件可以自己编辑标签,可以自动条形码或二维码的位置。 ,标签打印; C#控制程序; 二次开发; 编辑标签; 自动条形码或二维码。,C#标签打印控制程序源代码,支持二次开发与自定义编辑条码二维码