ShellStart0 LABEL DWORD
pushad ; 外壳入口点
call next0
;**********************************************************
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
; 以下是自构造的外壳的输入表
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportTableBegin LABEL DWORD
ImportTable DD AddressFirst-ImportTable ;OriginalFirstThunk
DD 0,0 ;TimeDataStamp,ForwardChain
AppImpRVA1 DD DllName-ImportTable ;Name
AppImpRVA2 DD AddressFirst-ImportTable ;FirstThunk
DD 0,0,0,0,0
AddressFirst DD FirstFunc-ImportTable ;指向IMAGE_tHUNK_DATA
AddressSecond DD SecondFunc-ImportTable ;指向IMAGE_tHUNK_DATA
AddressThird DD ThirdFunc-ImportTable ;指向IMAGE_tHUNK_DATA
DD 0
DllName DB 'KERNEL32.dll'
DW 0
FirstFunc DW 0
DB 'GetProcAddress',0
SecondFunc DW 0
DB 'GetModuleHandleA',0
ThirdFunc DW 0
DB 'LoadLibraryA',0
ImportTableEnd LABEL DWORD
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
; 以下是自构造的假重定位表(处理DLL时用)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RelocBaseBegin LABEL DWORD
RelocBase DD 0
DD 08h
DD 0
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
; 以下是需要由加壳程序修正的变量
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SHELL_DATA_0 LABEL DWORD
ShellBase DD 0
ShellPackSize DD 0
TlsTable DB 18h dup (?)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
; 外壳引导段使用的变量空间
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Virtualalloc DB 'VirtualAlloc',0
VirtualallocADDR DD 0
imagebase DD 0
ShellStep DD 0
ShellBase2 DD 0
;**********************************************************
next0:
pop ebp
sub ebp,(ImportTable-ShellStart0)
请问为什么这个得到shellstart0的这句为什么不是sub ebp,(next0-ShellStart0)?
难道中间的IAT不算吗?多谢哦
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课