汇聚知识碎片,解决技术难题,专注提供易语言源码资源,视频教程,等在线学习交流论坛
 
发新帖
楼主: 666
查看: 433|回复: 0

Nt_Executable_* - Routine

[复制链接]
666VIP1 发表于 2021-4-20 14:15:43 | 显示全部楼层
本帖最后由 666 于 2021-5-10 13:29 编辑
  1. .版本 2

  2. .程序集变量 函数句柄
  3. .局部变量 name
  4. .局部变量 namelen
  5. .局部变量 Unicode
  6. .局部变量 Unicodelen
  7. .局部变量 pUnicodelen
  8. .局部变量 h
  9. .局部变量 punicode_string, 长整数型
  10. .局部变量 ansi_string, 长整数型
  11. .局部变量 SYSTEM_MODULE_INFORMATION
  12. .局部变量 MODULE_
  13. .局部变量 SYSTEM_MODULE
  14. .局部变量 i
  15. .局部变量 j
  16. .局部变量 RequiredSize
  17. .局部变量 zwzz, 字节集

  18. name = Asm_GetDataH (“kernelbase.dll”)  ' 定义Ansi编码 取其指针 因为存在整体中无法释放
  19. namelen = Asm_len (name)  ' 取A编码长度

  20. Unicodelen = Asm_mul (Asm_len (name), 2)  ' 取A编码长度*2=Unicodelen
  21. Unicode = Nt_Heap_RtlAllocateHeap (g_heap, 位或 (#HEAP_ZERO_MEMORY, #HEAP_GENERATE_EXCEPTIONS), Unicodelen)  ' 申请相应长度内存
  22. Nt_Trans_RtlMultiByteToUnicodeN (Unicode, Unicodelen, Asm_GetH (pUnicodelen), name, namelen)  ' 传入地址转换编码

  23. Asm_writeWord_1 (punicode_string, pUnicodelen)
  24. Asm_writeWord__1 (punicode_string, 2, pUnicodelen)
  25. Asm_writeDword__1 (punicode_string, 4, Unicode)

  26. .如果真 (Nt_Executable_LdrLoadDll (#NULL, 0, Asm_GetH (punicode_string), Asm_GetH (h)) ≠ 0)  ' DONT_* & LOAD_*。
  27.     输出调试文本 (“加载失败”)
  28. .如果真结束

  29. Nt_Executable_LdrGetDllHandle (#NULL, #NULL, Asm_GetH (punicode_string), Asm_GetH (h))

  30. Nt_Heap_RtlFreeHeap (g_heap, 0, Unicode)  ' 释放掉内存
  31. ' ---------------------------------------------------------------------------------

  32. name = Asm_GetDataH (“GetTickCount64”)  ' 定义Ansi编码 取其指针
  33. Asm_writeWord_1 (ansi_string, Asm_len (name))
  34. Asm_writeWord__1 (ansi_string, 2, Asm_len (name))
  35. Asm_writeDword__1 (ansi_string, 4, name)

  36. Nt_Executable_LdrGetProcedureAddress (h, Asm_GetH (ansi_string), 0, Asm_GetH (函数句柄))  ' 使用名称取其偏移指针

  37. 输出调试文本 (GetTickCount64 ())

  38. ' Nt_Executable_LdrGetProcedureAddress (h, 0, int 指定序号, 函数句柄)  ' 使用序号取其偏移指针,系统函数可能不一致
  39. ' ---------------------------------------------------------------------------------

  40. SYSTEM_MODULE_INFORMATION = Nt_Heap_RtlAllocateHeap (g_heap, 位或 (#HEAP_ZERO_MEMORY, #HEAP_GENERATE_EXCEPTIONS), 4 + 284 × 256)
  41. Nt_Executable_LdrQueryProcessModuleInformation (SYSTEM_MODULE_INFORMATION, 4 + 284 × 256, RequiredSize)  ' Ansi垃圾函数不推荐使用,建议遍历PEB

  42. i = 4
  43. .计次循环首 (Asm_readDword (SYSTEM_MODULE_INFORMATION), )
  44.     ' 输出调试文本 (Asm_readDword_ (SYSTEM_MODULE_INFORMATION, Asm_add (8, i)))
  45.     ' 输出调试文本 (到文本 (指针到字节集 (Asm_add (SYSTEM_MODULE_INFORMATION, Asm_add (28, i)), 256)))  ' 指针到字节集 只是为了切合 输出

  46.     i = i + 284
  47. .计次循环尾 ()
  48. ' Section, 整数型, , , 保留
  49. ' MappedBase, 整数型, , , 映射句柄
  50. ' ImageBase, 整数型, , , 模块句柄
  51. ' ImageSize, 整数型, , , 模块长度
  52. ' Flags, 整数型, , , 模块标志
  53. ' LoadOrderIndex, 短整数型, , , 装载顺序索引
  54. ' InitOrderIndex, 短整数型, , , 初始顺序索引
  55. ' LoadCount, 短整数型, , , 函数计数
  56. ' OffsetToFileName, 短整数型, , , 名称偏移
  57. ' ImageName, 字节型, , "256"
  58. Nt_Heap_RtlFreeHeap (g_heap, 0, SYSTEM_MODULE_INFORMATION)  ' 释放掉内存
复制代码

快速回复 返回顶部 返回列表