能力值:
( LV1,RANK:0 )
|
-
-
[求助]加壳后的程序打不开.
Mxixihaha
VOID ShellCode()
{
//可以通过硬编码,将要执行的函数全抠出来扔到这个Shell ...
谢谢大佬,我前阵子复查了好久才发现的。非常感谢哈O(∩_∩)O
|
能力值:
( LV1,RANK:0 )
|
-
-
[求助]加壳后的程序打不开.
zylrocket
我以前找那个”金牌服务“就是出现这个情况,找人看了下,原来是那个金牌服务又给软件加了一层壳子,骗我说没加壳子,呵呵
什么情况来的大佬.我这个shellcode是自己码的,我从堆栈里跟了整个程序好像也没问题,应该不会有多重壳的问题吧。。
|
能力值:
( LV1,RANK:0 )
|
-
-
|
能力值:
( LV1,RANK: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;
|
能力值:
( LV1,RANK:0 )
|
-
-
[求助]使用代码拉伸程序再压缩后进行存盘,文件打不开以及RVA转FOA的代码问题,望解答谢谢!
tDasm
SizeofImage 加载到内存的虚拟空间大小。
你应该按照节表分别处理(raw data offs和 raw data size,用每节的文件偏移和大小,这个决定文件大小)。
不好意思大佬.我试着几天越解决越混乱.按照滴水教程里老师说的Newbuffer的大小是用最后一个节在文件中的偏移+这个节的大小,而在网上找的代码他们用的都是用每个节表的大小+SizeofHanders来决定要申请的Newbuffer的节的大小.但是两种方式得到的数据都比PEtool里打开的文件的尺寸还小。另外就是我代码内存拷贝跟网上的没差,但是存盘的文件用Winhex打开发现还是按照内存对齐的方式存的,而且少了很多的节。。
|
能力值:
( LV1,RANK:0 )
|
-
-
|
能力值:
( LV1,RANK:0 )
|
-
-
|