`
黑色杰克史密斯
  • 浏览: 16243 次
社区版块
存档分类
最新评论

云彬锅的GetKernelBase

 
阅读更多
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);
}
分享到:
评论

相关推荐

    西加云杉本地跳转AAA认证配置文件

    项目说明链接:http://blog.csdn.net/qq_17616169/article/details/70683300 包含需要配置的:1、AC配置文件完整版;2、FreeRadius配置文件;3、MySql需要导入的sql文件。

    安车检测:2019年半年度报告.PDF

    2. **财务报告真实性和完整性**:负责人贺宪宁、主管会计工作负责人李云彬及会计机构负责人王巍声明财务报告的真实、准确和完整,强调了公司的诚信经营原则。 3. **政策风险**:报告指出国家对在用机动车强制性检测...

    交大铁发:2019年半年度报告.PDF

    新一届董事会由王鹏翔、刘兴宇、赵静、赵平、杨云彬组成,监事会由王玲华、鲜芸、夏文桂担任监事。这一变动体现了公司治理结构的稳定性和持续性。 其次,报告的第二部分涉及会计数据和财务指标摘要,这部分内容可能...

    基于微信小程序的社区门诊管理系统php.zip

    基于Php语言设计并实现了微信小程序的社区门诊管理系统。该小程序基于B/S即所谓浏览器/服务器模式,选择MySQL作为后台数据库去开发并实现一个以微信小程序的社区门诊为核心的系统以及对系统的简易介绍。 用户注册,在用户注册页面通过填写账号、密码、确认密码、姓名、性别、手机、等信息进行注册操作; 用户登录,用户通过登录页面输入账号和密码,并点击登录进行小程序登录操作。 用户登陆微信端后,可以对首页、门诊信息、我的等功能进行详细操作 门诊信息,在门诊信息页面可以查看科室名称、科室类型、医生编号、医生姓名、 职称、坐诊时间、科室图片、点击次数、科室介绍等信息进行预约挂号操作 检查信息,在检查信息页面可以查看检查项目、检查地点、检查时间、检查费用、账号、姓名、医生编号、医生姓名、是否支付、审核回复、审核状态等信息进行支付操作

    白色大气风格的设计师作品模板下载.zip

    白色大气风格的设计师作品模板下载.zip

    工程经济学自考必备软件下载

    工程经济学自考必备软件下载

    UML课程设计报告.doc

    UML课程设计报告.doc

    白色大气风格响应式彩绘精品水果网站模板.zip

    白色大气风格响应式彩绘精品水果网站模板.zip

    白色简洁风格的别墅整站网站模板.zip

    白色简洁风格的别墅整站网站模板.zip

    白色简洁风格的APP展示动态源码下载.zip

    白色简洁风格的APP展示动态源码下载.zip

    VB+access电表管理系统(系统+论文+参考文献)(2024qu).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

    白色大气风格的雪山旅游景区CSS3网站模板.zip

    白色大气风格的雪山旅游景区CSS3网站模板.zip

    基于python开发的大模型调用基础框架(源码)

    介绍 基于python开发的大模型调用基础框架(源码) 使用说明 修改配置文件 cd config vim __init__.py # 在配置文件中添加大模型调用地址,模型名称,API_KEY等配置 启动应用 应用启动分为两种模式,命令行模式和web模式 命令行模式 python main.py cli web模式 python main.py api

    基于JavaWeb的小区物业管理系统源代码+数据库

    基于JavaWeb的小区物业管理系统源代码+数据库 负责数据库的设计和界面的设计和实现; 界面使用 BootStrap 框架,页面自适应效果,修改页面后实现各个功能模块的布局; 负责实现用户登录注册,查看小区活动公告、水电费查询、车费查询信息; 采用的技术:采用 MVC 架构,数据库用 MySql;

    白色简单风格的商务企业网站模板下载.zip

    白色简单风格的商务企业网站模板下载.zip

    数据分析-29-260万用户大型家电和电子产品购买分析(包含数据代码)

    1. 平台在家电和电子产品方面的营运情况如何? 2. 哪些品牌和类别销量最高? 3. 用户消费规律 4. 哪些是我们的重点用户? 5. 平台有哪些优势和不足,需要如何改进?

    全平台数据库管理工具MySQL

    全平台数据库管理工具, 支持 ClickHouse, Presto, Trino, MySQL, PostgreSQL, Apache Druid, ElasticSearch...

    白色大气风格的旅游整站网站模板.zip

    白色大气风格的旅游整站网站模板.zip

    STM32F030单片机控制蜂鸣器.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。

    【信息融合】基于matlab多维卡尔曼滤波器传感器信息融合(含GPS)【含Matlab源码 9980期】含报告.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics