Delphi写ShellCode获取Kernel32.DLL的地址.

好几年前曾写过一些ShellCode代码.
Delphi是最适合写ShellCode的工具
很多年没用了,今天刚刚回头看了一下,发现是随着系统的发展,其中获取Kernel32.DLL的方法在Vista/WIN7时代和X64中都已经不使用了.
就完善了一下.
现在是XP/Vista/WIN7以及X86/X64通吃.

function Kernel32Handle(): HMODULE;
{$IFDEF CPUX64}
asm
  mov rbx,$60
  mov rax,[gs:rbx]   // peb
  mov rax,[rax+$18]  // LDR
  mov rax,[rax+$30]  // InLoadOrderModuleList.Blink,
  mov rax,[rax]  // [_LDR_MODULE.InLoadOrderModuleList].Blink kernelbase.dll
  mov rax,[rax]  // [_LDR_MODULE.InLoadOrderModuleList].Blink kernel32.dll
  mov rax,[rax+$10]  //[_LDR_MODULE.InLoadOrderModuleList]. BaseAddress
end;
{$ELSE}
asm
  mov     eax,[fs:$30]  // Peb
  mov     eax,[eax+$C]  // LDR
  mov     eax,[eax+$C]  // InLoadOrderModuleList
  mov     eax,[eax]   // [_LDR_MODULE.InLoadOrderModuleList].Blink kernelbase.dll
  mov     eax,[eax]    //[_LDR_MODULE.InLoadOrderModuleList].Blink kernel32.dll
  mov     eax,[eax+$18] //[_LDR_MODULE.InLoadOrderModuleList]. BaseAddress
end;
{$ENDIF}

另一方面之前写过一个FixChar是修正Delphi的的字符串常量在ShellCode中的相对位置的.具体就是Delphi的编译器特点,字符串常量不是象微软编译器那样在只读数据段,而是附在函数尾部.因为ShellCode运行位置不固定,所以只要修正偏移即可.这点比用C写ShellCode不能使用字符串常量而要事先计算出Hash值方便多了.
本来也想改成支持X64的.却发现有惊喜.
FixPChar(‘abcdefg’);
实际上在编译的时候变成了如下截图的样子.

不再是把字符串常量地址直接拿来用,而是用的相对地址.也就是说实际上X64的ShellCode,Delphi连字符串常量的地址都不用修正了,因为它用的是相对地址.
新的FixChar如下:

Function FixPChar(Value: PChar): PChar;
{$IFDEF CPUX64}
asm
  mov rax,rcx //Delphi X64字符串常量用的相对地址算出来的(X64中绝对地址比较少,一般都有32位数的相对地址偏移.例如跳转,造成Hook的时候要用一些技巧),这个函数纯属做样子,是为了统一32位代码
end;
{$ELSE}
asm
  call   @next                //
@next:    pop    ecx                  // ecx里面装的就是@next的相对地址,当前执行时
  mov    ebx, offset @next    // ebx里面装的就是@next的绝对地址,编译时生成的
  add    eax, ecx             // 返回Value的地址+(相对地址-绝对地址)
  sub    eax, ebx
end;
{$ENDIF}

写上面的这些代码的时候对比用VC来写,又一次感叹Delphi做ShellCode太方便了,VC在X64中是不能内嵌汇编的,必须蛋疼的单独再写一个asm文件,再把这个asm编译成obj链接进来.

此条目发表在Delphi, 未分类分类目录。将固定链接加入收藏夹。

Delphi写ShellCode获取Kernel32.DLL的地址.》有133条回应

  1. 匿名说:

    x64下的shellcode没必要这样重定位,直接计算就可以了
    反正都是lea 取rel+xxx这样的偏移地址的
    代码还能优化
    mov eax,[fs:$30]
    替换成:
    cdq
    mov eax, [fs:edx+$30]
    就少两个字节

  2. 匿名说:

    其实delphi最大的好处也不是代码优化-代码优化不是很好。
    适合写shellcode的一个最大的原因是。编译器产生的代码是固定的不会改变
    void Start(){}
    void Entry(){}
    void End(){}
    xx = &End – &Start;
    这样计算的时候如果由于End不经常用根据数据约束,Start会被优化到距离Entry近的位置。简单的一句话。这个代码会被改变。有可能Entry根本不会再Start-End之间的内存区域。发生这样的变动是很痛苦的.而且C\C++在64位下已经不能内嵌汇编和直接使用汇编了。delphi依然坚挺。种种问题算下来其实delphi很好,当然C++ Builder也挺好.

  3. Pingback引用通告: 43ytr.icu/j/GPoAr

  4. Pingback引用通告: 2021

  5. Pingback引用通告: hs;br

  6. Pingback引用通告: tureckie_serialy_na_russkom_jazyke

  7. Pingback引用通告: tureckie_serialy

  8. Pingback引用通告: 00-tv.com

  9. Pingback引用通告: +1+

  10. Pingback引用通告: æóêè+2+ñåðèÿ

  11. Pingback引用通告: Ñìîòðåòü âñå ñåðèè ïîäðÿä

  12. Pingback引用通告: watch

  13. Pingback引用通告: âûòîïêà âîñêà

  14. Pingback引用通告: ++++++

  15. Pingback引用通告: HD-720

  16. Pingback引用通告: guardians+of+the+galaxy+2

  17. Pingback引用通告: strong woman do bong soon

  18. Pingback引用通告: my id is gangnam beauty

  19. Pingback引用通告: guardians of the galaxy vol 2

  20. Pingback引用通告: 2020

  21. Pingback引用通告: kpop+star+season+6+ep+9

  22. Pingback引用通告: Video

  23. Pingback引用通告: 1 2 3 4 5 6 7 8 9 10

  24. Pingback引用通告: wwin-tv.com

  25. Pingback引用通告: dinotube hd dinotube

  26. Pingback引用通告: Watch TV Shows

  27. Pingback引用通告: Kinokrad 2019 Kinokrad Hd

  28. Pingback引用通告: Kinokrad

  29. Pingback引用通告: filmy-kinokrad

  30. Pingback引用通告: kinokrad-2019

  31. Pingback引用通告: filmy-2019-kinokrad

  32. Pingback引用通告: serial

  33. Pingback引用通告: cerialest.ru

  34. Pingback引用通告: youtube2019.ru

  35. Pingback引用通告: dorama hdrezka

  36. Pingback引用通告: movies hdrezka

  37. Pingback引用通告: HDrezka

  38. Pingback引用通告: kinosmotretonline

  39. Pingback引用通告: LostFilm HD 720

  40. Pingback引用通告: trustedmdstorefy.com

  41. Pingback引用通告: bofilm ñåðèàë

  42. Pingback引用通告: bofilm

  43. Pingback引用通告: 1 seriya

  44. Pingback引用通告: Êîíñóëüòàöèÿ ïñèõîëîãà

  45. Pingback引用通告: topedstoreusa.com

  46. Pingback引用通告: hqcialismht.com

  47. Pingback引用通告: viagramdtrustser.com

  48. Pingback引用通告: 4serial.com

  49. Pingback引用通告: See-Season-1

  50. Pingback引用通告: Evil-Season-1

  51. Pingback引用通告: Evil-Season-2

  52. Pingback引用通告: Evil-Season-3

  53. Pingback引用通告: Evil-Season-4

  54. Pingback引用通告: Dollface-Season-1

  55. Pingback引用通告: Queer-Eye-We-re-in-Japan-Season-1

  56. Pingback引用通告: serial 2020

  57. Pingback引用通告: Dailymotion

  58. Pingback引用通告: Watch+movies+2020

  59. Pingback引用通告: serial-video-film-online

  60. Pingback引用通告: tvrv.ru

  61. Pingback引用通告: 1plus1serial.site

  62. Pingback引用通告: #1plus1

  63. Pingback引用通告: 1plus1

  64. Pingback引用通告: Watch Movies Online

  65. Pingback引用通告: Film

  66. Pingback引用通告: Film 2020

  67. Pingback引用通告: Film 2021

  68. Pingback引用通告: watch online TV LIVE 2020

  69. Pingback引用通告: parazity-oskar-2020

  70. Pingback引用通告: human design

  71. Pingback引用通告: DSmlka

  72. Pingback引用通告: viagra

  73. Pingback引用通告: viagra online

  74. Pingback引用通告: +

  75. Pingback引用通告: ¯jak Son³k

  76. Pingback引用通告: astrolog

  77. Pingback引用通告: film-kalashnikov-watch

  78. Pingback引用通告: generic cialis

  79. Pingback引用通告: cialis online

  80. Pingback引用通告: kinoxaxru.ru

  81. Pingback引用通告: pobachennya u vegas

  82. Pingback引用通告: strelcov 2020

  83. Pingback引用通告: film t-34

  84. Pingback引用通告: online pharmacy

  85. Pingback引用通告: canadian pharmacy

  86. Pingback引用通告: Beograd film 2020

  87. Pingback引用通告: psiholog

  88. Pingback引用通告: psixolog

  89. Pingback引用通告: Coronavirus real-time updates

  90. Pingback引用通告: PSYCHOSOCIAL

  91. Pingback引用通告: Cherekasi

  92. Pingback引用通告: Film Doktor Liza (2020)

  93. Pingback引用通告: film djoker

  94. Pingback引用通告: Ïñèõîëîã îíëàéí

  95. Pingback引用通告: generic viagra

  96. Pingback引用通告: viagra over the counter

  97. Pingback引用通告: buy viagra online

  98. Pingback引用通告: viagra pill

  99. Pingback引用通告: otc viagra

  100. Pingback引用通告: cialis generic

  101. Pingback引用通告: cialis 20mg

  102. Pingback引用通告: cialis price

  103. Pingback引用通告: cialis 5mg

  104. Pingback引用通告: bitly.com

  105. Pingback引用通告: movies-tekstmovies-tekst

  106. Pingback引用通告: Earthlings 2005

  107. Pingback引用通告: viagra 100mg

  108. Pingback引用通告: smotret onlajn v horoshem kachestve hd

  109. Pingback引用通告: malenkie-zhenshhiny-2020

  110. Pingback引用通告: Dom 2

  111. Pingback引用通告: Vratar Galaktiki Film, 2020

  112. Pingback引用通告: Cherkassy

  113. Pingback引用通告: chernobyl-hbo-2020-1-sezon-2-sezon

  114. Pingback引用通告: batmanapollo.ru

  115. Pingback引用通告: dom2-ru

  116. Pingback引用通告: psy psy psy psy

  117. Pingback引用通告: krsmi.ru

  118. Pingback引用通告: HD

  119. Pingback引用通告: groznyy-serial-2020

  120. Pingback引用通告: bitly.com/doctor-strange-hd

  121. Pingback引用通告: bitly.com/topgunmavericktopgun

  122. Pingback引用通告: 1445

  123. Pingback引用通告: cleantalkorg2.ru

  124. Pingback引用通告: vk login

  125. Pingback引用通告: tiktok

  126. Pingback引用通告: The Revenant 2021

  127. Pingback引用通告: Human Design 2021

  128. Pingback引用通告: psy

  129. Pingback引用通告: psy2022

  130. Pingback引用通告: projectio freid

  131. Pingback引用通告: kinoteatrzarya.ru

  132. Pingback引用通告: top

  133. Pingback引用通告: soderzhanki-3-sezon-2021.online

评论已关闭。