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

云彬锅的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文件。

    Scrapy-1.8.2.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    search-log.zip

    搜索记录,包括时间、搜索关键词等,用于PySpark案例练习

    6-12.py

    6-12

    2-6.py

    2-6

    Scrapy-0.24.5-py2-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于CS的远程监控系统软件项目(免费提供全套java开源项目源码+论文)

    项目介绍 背景 在当今的数字化时代,远程监控系统已经成为企业和个人必不可少的工具。随着物联网(IoT)技术的发展,监控系统的需求不断增加,不仅仅局限于视频监控,还包括数据监控、设备状态监控等。基于CS(Client-Server)架构的远程监控系统应运而生,旨在提供高效、实时、可靠的监控服务,帮助用户实现远程管理和控制。 目的 基于CS的远程监控系统软件项目旨在为用户提供一个综合性的监控平台,通过该平台,用户可以实时监控各类设备和数据,实现远程控制和管理,提高工作效率,降低运营成本。同时,该系统还可以用于安全防护、生产过程监控等多种场景,具有广泛的应用前景。 模块说明 前端模块 前端模块是用户与系统交互的界面,负责展示监控数据和接收用户指令。前端模块的主要功能包括: 用户登录与认证:通过安全的登录机制,确保只有授权用户才能访问系统。 实时数据展示:以图表、仪表盘等形式展示实时监控数据,包括视频流、传感器数据等。 报警通知:当监控系统检测到异常情况时,前端模块会通过弹窗、声音等方式通知用户。 远程控制:用户可以通过前端界面对设备进行远程控制,例如开关设备、调整参数等。

    课程大作业二手车价格预测案例数据挖掘python源码+数据集+实验报告+详细注释.zip

    课程大作业二手车价格预测案例数据挖掘python源码+数据集+实验报告+详细注释.zip

    基于springcloud和vue后台管理系统.zip

    springcloud 基于springcloud和vue后台管理系统.zip

    基于Pyotrch的深度学习物体分类可视化系统源码+预训练模型+详细训练教程.zip

    基于Pyotrch的深度学习物体分类可视化系统源码+预训练模型+详细训练教程.zip

    pytest-3.0.2.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    XXX公司组织结构诊断报告.ppt

    XXX公司组织结构诊断报告.ppt

    3-18-1.py

    3-18-1

    ZCU102 FPGA DDR4 MIG IP核读写接口封装与FIFO测试工程教程(配套下载资料)

    本资源提供了一份全面的教程,专注于使用ZCU102 FPGA开发板实现DDR4内存的读写操作。通过构建DDR4的MIG(Memory Interface Generator)IP核,本教程详细介绍了如何封装DDR4的读写时序,并创建了一个类似FIFO(先进先出)的接口,以优化数据流的管理和控制。此外,还包含了对所封装接口进行测试的工程实例,帮助开发者深入理解DDR4内存接口的高效应用。适合希望在FPGA项目中集成高效内存管理方案的工程师和高级学者。

    课程设计基于matlab机械臂末端轨迹规划的源码.zip

    课程设计基于matlab机械臂末端轨迹规划的源码.zip

    基于深度学习的LSTM算法双色球预测实战完整代码.zip

    基于深度学习的LSTM算法双色球预测实战完整代码.zip

    yolov5-face-landmarks-opencv

    yolov5检测人脸和关键点,只依赖opencv库就可以运行,程序包含C++和Python两个版本的。 本套程序根据https://github.com/deepcam-cn/yolov5-face 里提供的训练模型.pt文件。转换成onnx文件, 然后使用opencv读取onnx文件做前向推理,onnx文件从百度云盘下载,下载 链接:https://pan.baidu.com/s/14qvEOB90CcVJwVC5jNcu3A 提取码:duwc 下载完成后,onnx文件存放目录里,C++版本的主程序是main_yolo.cpp,Python版本的主程序是main.py 。此外,还有一个main_export_onnx.py文件,它是读取pytorch训练模型.pt文件生成onnx文件的。 如果你想重新生成onnx文件,不能直接在该目录下运行的,你需要把文件拷贝到https://github.com/deepcam-cn/yolov5-face 的主目录里运行,就可以生成onnx文件。

    matlab基于Matlab_Simulink的自主水下航行器三维路径跟踪仿真.zip

    matlab基于Matlab_Simulink的自主水下航行器三维路径跟踪仿真.zip

    麦肯锡 - 上海xx集团-完善组织架构,优化管理流程.ppt

    麦肯锡 - 上海xx集团-完善组织架构,优化管理流程.ppt

    pytest-7.3.2.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics