zoukankan      html  css  js  c++  java
  • 火绒注入

    http://www.mengwuji.net/thread-6765-1-1.html

    进程加载模块顺序 :

    ModLoad: 00f60000 00f80000 C:UsersYIFIDesktopAVLDebugAVL.exe // 自己本身
    ModLoad: 77700000 77879000 C:WINDOWSSYSTEM32 tdll.dll     
    ModLoad: 769b0000 76aa0000 C:WINDOWSSYSTEM32KERNEL32.DLL
    ModLoad: 76cc0000 76e36000 C:WINDOWSSYSTEM32KERNELBASE.dll
    ModLoad: 746a0000 746bc000 C:WINDOWSSYSTEM32VCRUNTIME140D.dll
    ModLoad: 5fdb0000 5ff26000 C:WINDOWSSYSTEM32ucrtbased.dll

    采用加载模块回调实现

    主要步骤:

    判断加载Dll名字  在加载完ntdll之后  因为需要的函数需要在ntdll里面搜索

    在Ntdll里面获取ZwProtectVirtualMemory  LdrLoadDll  ZwTestAlert地址 (win10取ntdll!LdrGetProcedureAddressForCaller)

    在ntdll附近分配注入shellcode需要的内存7.调用ntoskrnl!ZwReadVirtualMemory获取ntdll!ZwTestAlert处头5字节的数据保存起来

    填写数据到申请的内存上

    调用ntoskrnl!ZwWriteVirtualMemory往刚才分配的内存区域里复制配置好的shellcode及shellcode需要的数据。

    调用ntoskrnl!ZwProtectVirtualMemory+ZwWriteVirtualMemory+ZwProtectVirtualMemory把{0xE9, ??, ??, ??, ??}(其实是jmp到shellcode处)复制到ntdll!ZwTestAlert处,覆盖5个字节

    一波断点之后,拿到了shellcode的位置,跟进去就可以看出大致思路(应该是手写的汇编,这里就不放代码了)
    1.调用ntdll!NtProtectVirtualMemory修改ntdll!ZwTestAlert(这个地址是刚才第7步就预置好的,不是动态获取的)的保护页成PAGE_EXECUTE_READWRITE
    2.memcpy恢复ntdll!ZwTestAlert头部的5字节(这5个字节也是第7步预置好的)
    3.调用NtProtectVirtualMemory恢复ntdll!ZwTestAlert保护页
    4.调用ntdll!LdrLoadDll完成工作
    5.跳回ntdll!ZwTestAlert处

     代码链接

    爱程序 不爱bug 爱生活 不爱黑眼圈 我和你们一样 我和你们不一样 我不是凡客 我要做geek
  • 相关阅读:
    洛谷P1586 四方定理
    洛谷P3807 【模板】卢卡斯定理exgcd
    扩展中国剩余定理详解
    HDU 1573 X问题
    POJ 2891 Strange Way to Express Integers
    中国剩余定理详解
    java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方案
    MySQL对于有大量重复数据表的处理方法
    【一牛鸣】下周或触发新变盘9.16
    Django里面的RequestContext
  • 原文地址:https://www.cnblogs.com/yifi/p/6389251.html
Copyright © 2011-2022 走看看