|
这是哪里错了?好像缺个头文件
不过,衷心劝lz加强一下语言基本功 |
|
这是哪里错了?好像缺个头文件
毛,少误导人,你在人家的代码里找,这个找的方法还用教吗??随便在一个文本编辑器中找不行吗? Ctrl+F,或者 编辑---查找 菜单什么的,哎呀...最好找到人家的定义,当然理解了代码的意思可以根据自己意愿随意返回个值了.... |
|
[讨论] 有没有另类的点的注入DLL方法
dll陷阱如何呢 |
|
[讨论]NonPagedPool与PagedPool
什么叫相同文件,相同文件也可以为不同的代码段指定不同的分页方式,DriverEntry就是那种加载完就可以释放的空间,其他的函数就可以不是这种,需要常驻的用nonpaged pool,可以不常驻的用pagedpool呗 |
|
[求助]关于日历的编程题目
自己跑一下不就知道了,这还问人,难道自己没有一点调试能力吗?如果真的没有调试能力,那买红薯吧,那个好弄 |
|
[求助]WIN7 下星号密码查看如何实现?
GetWindowText |
|
[求助]这个函数应该加什么头文件?
_EPROCESS中自己不会取吗? |
|
这是哪里错了?好像缺个头文件
复制人家的代码吧?? 这里估计是人家宏定义的一个常量,自己看着点代码 |
|
[成果6.1]软件保护壳技术专题 - 添加新节
我的机器上,楼主发的程序运行后文件就不能运行了,有错误,好像是找不到dll |
|
C++代码对特定地址写入push xxx函数指令 机器码
没看过远程代码注入? |
|
[求助]问个初级问题
恩,改用几个4个 _EMIT 0指令 |
|
[求助]问个初级问题
是ls说的问题,接着问啊,我的给文件添加一个节的代码如下,好像这里编译不过啊: // 给文件添加一个小节 HANDLE hFile=CreateFile(mFileName,FILE_ALL_ACCESS,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if(INVALID_HANDLE_VALUE==hFile) { MessageBox(L"CreateFile Error!"); return; } HANDLE hFileMap=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,NULL); if(NULL==hFileMap) { MessageBox(L"CreateFileMapping Error!"); return; } LPVOID vStartAddr=MapViewOfFile(hFileMap,FILE_MAP_READ | FILE_MAP_WRITE,0,0,0); if(NULL==vStartAddr) { MessageBox(L"MapViewOfFile Error!"); return; } PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)vStartAddr; PIMAGE_NT_HEADERS pNtHeader=(PIMAGE_NT_HEADERS)(pDosHeader->e_lfanew+(DWORD)vStartAddr);//定位到NT头部 if(pNtHeader->Signature!=MAKEWORD(0x50,0x45))//PE标识 { MessageBox(L"Invalid PE File!"); return; } PIMAGE_FILE_HEADER pFileHeader=&pNtHeader->FileHeader; PIMAGE_OPTIONAL_HEADER pOptionHeader=&pNtHeader->OptionalHeader; //pFileHeader->NumberOfSections++;//添加一个节,增加节数 PIMAGE_SECTION_HEADER pLastSectionHeader=(PIMAGE_SECTION_HEADER)((DWORD)pNtHeader+sizeof(IMAGE_NT_HEADERS)+(pFileHeader->NumberOfSections-1)*sizeof(IMAGE_SECTION_HEADER)); PIMAGE_SECTION_HEADER pNewSectionHeader=pLastSectionHeader+1;//新添加的节的地址 DWORD vFileAligh=pOptionHeader->FileAlignment;//文件中的对齐粒度 DWORD vSectionAligh=pOptionHeader->SectionAlignment;//节表对齐粒度 char *vNewSectionName=".MySec"; memcpy(pNewSectionHeader->Name,vNewSectionName,strlen(vNewSectionName));//设置新节的名称 pNewSectionHeader->NumberOfLinenumbers=0;//可能是对应到源文件中的行号,这个没有用,直接放0 pNewSectionHeader->NumberOfRelocations=0;//需要重定位的地址,这里暂时没有,直接放0 pNewSectionHeader->PointerToLinenumbers=0; pNewSectionHeader->PointerToRelocations=0; pNewSectionHeader->Characteristics=IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE;//设置这个节的属性 //新节的内容大小 DWORD vAddrStart=(DWORD)MySectionStart; DWORD vAddrEnd=(DWORD)MySectionEnd; DWORD vCodeSize=vAddrStart-vAddrEnd+sizeof(DWORD); //下面根据文件对齐粒度计算这段代码的长度占用的大小 DWORD vCodeAlignCount=vCodeSize/vFileAligh; DWORD vAlighLeft=vCodeSize%vFileAligh; DWORD vCodeSizeForFileAlign=0; if(vAlighLeft==0)//非常巧,正好是对齐粒度的整数倍 { vCodeSizeForFileAlign=vCodeSize; } else { vCodeSizeForFileAlign=(vCodeAlignCount+1)*vFileAligh; } pNewSectionHeader->SizeOfRawData=vCodeSizeForFileAlign; pNewSectionHeader->Misc.VirtualSize=vCodeSizeForFileAlign; DWORD vLastSectionCodeSize=pLastSectionHeader->SizeOfRawData; DWORD vLastSectionRawPointer=pLastSectionHeader->PointerToRawData; DWORD vLastVirualAddr=pLastSectionHeader->VirtualAddress; //计算一下上一个小节按照FileAlignment对齐之后占用的空间的大小 vCodeAlignCount=vLastSectionCodeSize/vFileAligh; vAlighLeft=vLastSectionCodeSize%vFileAligh; if(vAlighLeft==0)//正好对齐 vCodeSizeForFileAlign=vLastSectionCodeSize; else vCodeSizeForFileAlign=(vCodeAlignCount+1)*vFileAligh; pNewSectionHeader->VirtualAddress=vLastVirualAddr+vCodeSizeForFileAlign; pNewSectionHeader->PointerToRawData=vLastSectionRawPointer+vCodeSizeForFileAlign;//到这里为止,新的节表的表头设置完毕,下面按照上面计算出来的文件偏移地址写入新节的内容 memcpy((char*)(pNewSectionHeader->PointerToRawData+(DWORD)vStartAddr),(char*)((DWORD)MySectionStart+sizeof(DWORD)),vCodeSize);//写入 //对文件的其他字段设置 pNtHeader->FileHeader.NumberOfSections+=1;//文件小节数加1 pNtHeader->OptionalHeader.SizeOfImage+=vCodeSizeForFileAlign;//修改文件的大小 *(DWORD*)(pNewSectionHeader->PointerToRawData+(DWORD)vStartAddr)=pOptionHeader->AddressOfEntryPoint;//保存老的入口点 pOptionHeader->AddressOfEntryPoint=*(DWORD*)(pNewSectionHeader->PointerToRawData+sizeof(DWORD));//设置新的入口点 UnmapViewOfFile(vStartAddr); CloseHandle(hFileMap); CloseHandle(hFile); MessageBox(L"添加小节完成!",L"提示",MB_OK); OnCancel(); return; _asm { vOldEntryPointAddress dd 0//(错误3) MySectionStart: call vNextAddr vNextAddr: pop ebx add ebx,offset vOldEntryPointAddress - offset vNextAddr//(错误4) mov eax,dword PTR[ebx] jmp eax MySectionEnd: } 编译错误: error C2065: 'MySectionStart' : undeclared identifier(错误1) error C2065: 'MySectionEnd' : undeclared identifier(错误2) error C2400: inline assembler syntax error in 'opcode'; found 'dd'(错误3) error C2425: '-' : non-constant expression in 'second operand'(错误4) |
|
[求助]通过枚举job Object来列举进程,如何找到Job Object
是什么神功让你把这些都看成了浮云呢? |
|
error C2027: use of undefined type '_EPROCESS'
还闹是吧??非得让你们80老大吐血是吗? 干脆stolenmu改名为 L"80老大" 好了,也算有个纪念意义 |
|
error C2027: use of undefined type '_EPROCESS'
你就是其中一个,还 “小心80高手找上门来”,你这个意思不光说明他没有招募到80高手,还说明他找的可能是其他方面的高手,比如打架高手,哈哈 这个事到此为止吧,也不看看看雪是什么地方 |
|
[求助]通过枚举job Object来列举进程,如何找到Job Object
这两个链表好像都不能断掉,为了对抗这个毕业论文中的提到的检测方法,我修改了_KTHREAD中的_KPROCESS指针为0,这样就无法从这个线程对象找到了EPROCESS结构了,但是我看到KiThreadReady函数里面会根据_KTHREAD查找EPROCESS结构的指针,这样我就必须Hook KiThreadReady函数,在真正的进入这个函数之前把这个指针恢复,不然这个指针为空, 我看微软的这个函数里面(WRK)并没有进行空指针检查,肯定要蓝屏的,其他的还有什么要做的呢? 请继续提供点关于线程调度的细节的资料吧,呵呵,俺把这个搞清楚,那个毕业论文中没有说清楚线程调度的细节啊 |
|
error C2027: use of undefined type '_EPROCESS'
你说,没事干嘛当时发那个帖子,还80高手,现在好了吧,不能问东西了吧,问人家就喷你,所以要低调 |
|
error C2027: use of undefined type '_EPROCESS'
干嘛要定义都是直接ULONG指针来操作吧,呵呵 |
|
关于typedef struct _EPROCESS定义
好像结构体只是 为了格式化的读取内存块,这样只是更符合人类的习惯而已,对计算机而言好像无所谓,数据就放在那里,你爱怎么读都可以,本来这里放的是个整形数据,你非得按照字符来读,随你喽 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值