首页
社区
课程
招聘
[求助]第16章外壳开发中重定位的问题(续)
2010-1-30 18:39 3429

[求助]第16章外壳开发中重定位的问题(续)

2010-1-30 18:39
3429
第16章外壳开发中重定位的问题
--------------------------------------------------------------------------------

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不算吗?多谢哦
另外,pop ebp语句中的ebp的作用是什么,ebp的值是从哪里得到?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回