-
-
[原创]抱歉来晚了.看到的时候刚好过了一天.哎~
-
发表于:
2008-10-5 06:42
3336
-
看到的时候居然都已经过时了(比赛过时了)...还是发出来的
Email:Anskya@Gmail.com
[1].确定数据位置
1.四个区段.就那两句代码.四个区段.空闲出来的空间足够我们使用的了
2.导入表:RVA:00002014,Size:0000003C
kernel32:2
user32:1
查看原始数据
0x600:8A200000 7E200000 00000000 64200000 00000000
GetProcessHeap RtlAllocateHeap 结尾 MessageBoxA 结尾
很不幸~空隙不够用.1.往后移动导入表 2.重建导入表.为了得高分.采用第一种做法
3.导出表:无(需要自己重建)
4.重定位表:需要自己添加...不难不难
[2].修改导入表
1.将导入表向后移动到空闲空间...
2.将kernel32和user32一直往后移动4字节...
3.将原有的导入表数组就是SizeOf(TImageImportDescriptor)*3-移动到文件偏移:0x700
4.其他的看修改后的文件
[3].添加数据
1.编写代码决定使用WinExec--因为使用Shell32:ShellExecuteA比较浪费代码
2.不计算数据的话..13字节可完成-----添加地址:0x4CA
[code]
6A 05 push 5 ; /ShowState = SW_SHOW
68 80308D00 push 008D3080 ; |CmdLine = "iexplore.exe
http://bbs.pediy.com"
FF15 08208D00 call dword ptr [<&KERNEL32.WinExec>] ; \WinExec
C3 retn
[4].添加导出表
把USER32往后移动...
自己看PE结构吧...
[5].修改重定位表
添加两次重定位表(关键中的关键...重定位表的大小一定要和SizeOfBlock一致否则load出错)
push 008D3080--------RAV:10D3
call [WinExec]-------RAV:10CD
[/code]
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)