您的位置:程序门 -> c/c++ -> c++ 语言



满分求一问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


满分求一问题
发表于:2007-07-08 15:12:21 楼主
求一   为pe文件添加   新节区     运行其修改的   pe文件后     messagebox   出   一些字符     字符串随便     要c语言版的   ...       我看了看雪的那份     pe文件注入shellcode   并加载指定   dll..
那注释太少了..(看不大懂)       希望各位     写份..     或者是你那有   就贴上来.   .
  谢谢
发表于:2007-07-08 15:18:181楼 得分:0
高难度啊,
手工写还会,用程序写就难了
发表于:2007-07-08 15:20:442楼 得分:0
增加区块:
1。修改ntheader里面的numberofsections增加1
2。找到原来块表最后一个对象,指针+1就是增加的
然后设置头:
virtualsize   =   1000h(一般为一个sectionaligntment)
virtualaddress   =   上一个的virtualaddress+(virtualsize对sectionalignment对齐后大小)
pointertorawdata为上一个的pointertorawdata+sizeofrawdata
sizeofrawdata   =   200h(一般为一个filealignment)
flags   =   可以执行,可以放数据
其它0
3。修改ntheader的imagesize增加到新表头的virtualaddress+virtualsize
4。pe文件已经增加了一个区块!
然后注入代码,这个部分想要写一个简单的汇编程序,获得invoke的代码和字符串数据
然后决定pe文件里面有messagebox这个dll函数输入(import_table里面)
最后复制代码到新建立的块里
最最后修改文件entrypoint里面的第一个指令,改为jmp   新块起始地址(就是块的virtualaddress   )
发表于:2007-07-08 15:29:293楼 得分:0
只是片段:
假设已经读入原pe文件所有信息,image_nt_header,image_section_header
设:image_nt_header   *nth;
image_section_header   *scnh,*p;
//   nth和scnh已经读入
增加区块代码:
p   =   scnh   +   (++nth-> fileheader.numberofsections);//指向增加的那个
p-> virtualaddress   =   align((p-1)-> virtualaddress,scnh-> optionalheader.sectionalignment);//调用一个函数,求出对齐后数值
p-> misc.virtualsize   =   0x1000;//   ms编译器默认大小
p-> pointertorawdata   =   (p-1)-> pointertorawdata   +   (p-1)-> sizeofrawdata;
p-> sizeofrawdata   =   0x200;//     ms编译器默认大小
//其余赋值成0
p-> flags   =   image_scn_cnt_code   ;//可以执行
nth-> optionalheader.imagesize   =   p-> virtualaddress   +   p-> misc.virtualsize;
//调整景象大小
//完成区块的增加
发表于:2007-07-08 16:51:234楼 得分:0
怎么给你分
发表于:2007-07-09 08:44:265楼 得分:0
结贴只要点击自己帖子最后的管理然后分配分数,最后输入密码,点结贴就可以了~


快速检索

最新资讯
热门点击