首页
社区
课程
招聘
使用
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-3-11 19:33
0
[求助]加壳后的程序打不开.
Mxixihaha VOID ShellCode() {     //可以通过硬编码,将要执行的函数全抠出来扔到这个Shell ...
谢谢大佬,我前阵子复查了好久才发现的。非常感谢哈O(∩_∩)O
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-2-6 23:18
0
[求助]加壳后的程序打不开.
zylrocket 我以前找那个”金牌服务“就是出现这个情况,找人看了下,原来是那个金牌服务又给软件加了一层壳子,骗我说没加壳子,呵呵
什么情况来的大佬.我这个shellcode是自己码的,我从堆栈里跟了整个程序好像也没问题,应该不会有多重壳的问题吧。。
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-2-4 05:09
0
[踩楼有奖]看雪祝大家新年快乐,虎年大吉!
一个问题一周都没搞定,哭死。祝大家新年快乐。
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-2-4 04:24
0
[求助]使用代码拉伸程序再压缩后进行存盘,文件打不开以及RVA转FOA的代码问题,望解答谢谢!

左边的是源文件,用WINHEX打开文件的时候存的是600,右边则是我拉伸后压缩的,同样的节在文件中的位置却是1000


另外就是存盘之后还少了很多的节....请大佬救我


核心代码

NewBuffer = malloc(NewBufferSize);
	if (!NewBuffer)
	{
		printf("NewBuffer空间开辟失败\n");
		free(NewBuffer);
	}

	memset(NewBuffer, 0, NewBufferSize);
	//开始ImageBuffer 转化为NewBuffer

	memcpy(NewBuffer, ImageBuffer, IMAGE_OP64->SizeOfHeaders);  //copy头,将ImageBuffer的所有头Copy到NewBuffer里

	PIMAGE_DOS_HEADER New_DOC = NULL;
	PIMAGE_NT_HEADERS New_NT = NULL;
	PIMAGE_FILE_HEADER New_FIE = NULL;
	PIMAGE_OPTIONAL_HEADER64 New_OP64 = NULL;
	PIMAGE_SECTION_HEADER   New_SEC = NULL;
	New_DOC = (PIMAGE_DOS_HEADER)(NewBuffer);
	New_NT = (PIMAGE_NT_HEADERS)((char*)NewBuffer + New_DOC->e_lfanew);
	New_FIE = (PIMAGE_FILE_HEADER)((char*)NewBuffer + New_DOC->e_lfanew + 4);
	New_OP64 = (PIMAGE_OPTIONAL_HEADER64)((char*)NewBuffer + New_DOC->e_lfanew + 4 + IMAGE_SIZEOF_FILE_HEADER);
	New_SEC = (PIMAGE_SECTION_HEADER)((char*)NewBuffer + New_DOC->e_lfanew 
	+ 4 + IMAGE_SIZEOF_FILE_HEADER + New_FIE->SizeOfOptionalHeader);

	
	
	int Nsec = New_FIE->NumberOfSections;
	cout << "要复制的节的数量=" << Nsec << endl;


	//Imagebuffer源节
	IMAGE_SEC = (PIMAGE_SECTION_HEADER)((char*)ImageBuffer + IMAGE_DOC->e_lfanew
		+ 4 + IMAGE_SIZEOF_FILE_HEADER + IMAGE_FILE->SizeOfOptionalHeader);
	//Newbuffer 目标节
	New_SEC = (PIMAGE_SECTION_HEADER)((char*)NewBuffer + New_DOC->e_lfanew
		+ 4 + IMAGE_SIZEOF_FILE_HEADER + New_FIE->SizeOfOptionalHeader);
	for (int i = 0; i < Nsec; i++)
	{
	
	
//核心代码
		printf("目标Newbuffer第%x节:%s的文件地址是%x\n", i+1, New_SEC[i].Name, New_SEC[i].PointerToRawData);
		memcpy(((char*)NewBuffer + (New_SEC[i].PointerToRawData)), ((char*)ImageBuffer 
		+ (IMAGE_SEC[i].VirtualAddress)), New_SEC[i].SizeOfRawData);
		
	}

	cout << "ImageBufferToNewBuffer结束,Newbuffer的尺寸是:" << NewBufferSize << endl;
	return NewBuffer;


雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-2-4 04:17
0
[求助]使用代码拉伸程序再压缩后进行存盘,文件打不开以及RVA转FOA的代码问题,望解答谢谢!
tDasm SizeofImage 加载到内存的虚拟空间大小。 你应该按照节表分别处理(raw data offs和 raw data size,用每节的文件偏移和大小,这个决定文件大小)。
不好意思大佬.我试着几天越解决越混乱.按照滴水教程里老师说的Newbuffer的大小是用最后一个节在文件中的偏移+这个节的大小,而在网上找的代码他们用的都是用每个节表的大小+SizeofHanders来决定要申请的Newbuffer的节的大小.但是两种方式得到的数据都比PEtool里打开的文件的尺寸还小。另外就是我代码内存拷贝跟网上的没差,但是存盘的文件用Winhex打开发现还是按照内存对齐的方式存的,而且少了很多的节。。
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-1-28 11:45
0
[求助]使用代码拉伸程序再压缩后进行存盘,文件打不开以及RVA转FOA的代码问题,望解答谢谢!
tDasm SizeofImage 加载到内存的虚拟空间大小。 你应该按照节表分别处理(raw data offs和 raw data size,用每节的文件偏移和大小,这个决定文件大小)。
明白了大佬,非常感谢你O(∩_∩)O
雪    币: 159
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
白嫖怪 2022-1-28 10:01
0
[求助]使用代码拉伸程序再压缩后进行存盘,文件打不开以及RVA转FOA的代码问题,望解答谢谢!
谢谢大佬,我重定位表还没有处理,我还有一个问题就是拉伸的时候申请的空间是根据程序的SizeofImage申请的,我不理解帖子里第二张图片的结果,原本的文件是12KB,我用SizeofImage申请后存盘的程序文件为何才8KB..希望大佬解答下,谢谢(∩_∩)
精华数
RANk
159
雪币
0
活跃值
关注数
粉丝数
0
课程经验
0
学习收益
0
学习时长
基本信息
活跃值  活跃值:活跃值
  在线值:
  浏览人数:0
  最近活跃:0
  注册时间:2022-01-22
勋章
能力值

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册