Loading... 1.程序的入口点是(D ) ``` A. 默认基址 ``` ``` B. main函数 ``` ``` C. 代码段的地址 ``` ``` D. AddressOfEntryPoint ``` 2.是否支持随机基址具体存在( )位置B ``` A. 扩展头中Charactieristics ``` ``` B. 扩展头中DllCharactieristics ``` ``` C. NT头中Signature ``` ``` D. DOS头中e_lfanew 3.默认文件、内存的对齐粒度为( )B ``` ``` A. 0x400,0x1000 ``` ``` B. 0x200,0x1000 ``` ``` C. 0x200,0x400 ``` ``` D. 0x400,0x200 4.将RVA转换VA正确的是:扩展头中AddressOfEntryPoint的值是0x18000,进程加载基址0x3A0000,默认加载基址0x400000,那么AddressOfEntryPoint的实际VA是( )A ``` ``` A. 0x3B8000 ``` ``` B. 无法计算 ``` ``` C. 0x400000 ``` ``` D. 0x418000 5.如何修改一个区段属性( )C ``` ``` A. 只能动态修改内存属性 ``` ``` B. 修改扩展头 ``` ``` C. 修改区段头表中Charactieristics字段 ``` ``` D. 修改文件头 6.IAT与INT描述错误的是( )D ``` ``` A. IAT与INT结构相同 ``` ``` B. 在文件中IAT与INT储存内容都是函数名地址RVA或序号 ``` ``` C. 加载到内存中,IAT中存放的是API的地址 ``` ``` D. 加载到内存中,INT中存放的是API的地址 7.重定位表在数据目录表的第几项(从0开始)( )C ``` ``` A. 第0项 ``` ``` B. 第3项 ``` ``` C. 第5项 ``` ``` D. 第1项 ``` 8.添加一个区段需要哪些步骤( )(多选) (最少选1项)ABCD ``` A. 修改IMAGE_OPTIONAL_HEADER中字段SizeOfImage镜像总大小 ``` ``` B. 修改IMAGE_SECTION_HEADER数组中新增加的那一项的必要字段 ``` ``` C. 修改文件头中NumberOfSection数值+1 ``` ``` D. 在文件末尾增加指定大小的内容 ``` 9.写壳时在区段头表添加一项,其中所添写数据计算正确的是( )(多选) ABCD ``` A. 新区段表的文件偏移PointerToRawData= 等于对齐后的文件大小 ``` ``` B. 新区段表在内存RVA=(内存对齐)(上一个区段表的VirtualAddress+区段大小 VirtualSize) ``` ``` C. 新区段表的属性 = (0xE000040)可读可写可执行 ``` ``` D. 新区段表名= 8个ASCII码字符 ``` 10.手动获取kernel32步骤( )A ①通过TEB+0x30获取PEB ②遍历InInitializationOrderModuleList获取模块信息 ③InInitializationOrderModuleList+0x18获取dll模块名 ④InInitializationOrderModuleList+0x08获取dll模块基址 ⑤通过PEB+0x0C获取_PEB_LDR_DATA ⑥通过PEB_LDR_DATA +0x1c获取InInitializationOrderModuleList ``` A. ①⑤⑥②③④ ``` ``` B. ①②③④⑤⑥ ``` ``` C. ①⑤⑥③④② ``` ``` D. ①⑤③④②⑥ 11.应用进程中Fs:[0]存放的是( )A ``` ``` A. 异常链表首地址 ``` ``` B. PEB地址 ``` ``` C. EPROCESS地址 ``` ``` D. THREAD 地址 12.修复重定位的公式( )D ``` ``` A. 重定位数据+当前加载基址 ``` ``` B. 重定位数据-0x400000+当前加载基址 ``` ``` C. 重定位数据-0x1000000+当前加载基址 ``` ``` D. 重定位数据-原默认加载基址+当前加载基址 13.加密导入表流程( )C ①获取INT中对应的函数地址 ②获取IAT地址 ③申请空间存放解密IAT的ShellCode ④将shellcode地址写入IAT数组中 ⑤释放申请的空间 ``` ``` A. ①②③⑤ ``` ``` B. ①③②④⑤ ``` ``` C. ①②③④ ``` ``` D. ①②③④⑤ 14.描述加壳正确的是( )ABCD ``` ``` A. 保护软件防止被修改 ``` ``` B. 免杀 ``` ``` C. 保护软件防止反编译 ``` D. 压缩软件,减少软件的体积 15.通常壳代码的执行流程是()A ① 保存寄存器环境 ② 解压代码和数据 ③ 初始化壳需要的一些函数 ④ 修复重定位 ⑤ 修复 IAT ⑥ 恢复寄存器环境 ⑦ 跳转到原始 OEP ``` A. ①③②⑤④⑥⑦ ``` ``` B. ①②③⑤④⑥⑦ ``` ``` C. ①⑤③④②⑥⑦ ``` ``` D. ①⑤②③⑥④⑦ 16.壳常用技术( )ABCD ``` ``` A. 反调试 ``` ``` B. 代码膨胀 ``` ``` C. 花指令 ``` ``` D. 压缩区段 17.写壳时,对于支持随机基址程序,若加密了代码段,想让原程序正常运行,则壳需要( )A ``` ``` A. 修复原程序重定位 ``` ``` B. 修复原程序导入表 ``` ``` C. 修复原程序导出表 ``` ``` D. 修复原程序资源表 18.PE加载的过程( )A ①分配空间 ②映射区段 ③创建线程执行OEP ④修复重定位 ⑤调用TLS回调 ``` ``` A. ①②④⑤③ ``` ``` B. ①②③④⑤ ``` ``` C. ①②③④ ``` ``` D. ①②④⑤ 19.vs如何指定一个程序入口( )A ``` ``` A. #pragma comment(linker,"/entry: ``` \"MyStub\"") ``` B. #pragma comment(linker,"/main: ``` \"Mystub"") ``` C. #pragma comment(lib,”/main: ``` \"Mystub"") ``` D. #pragma comment(libker,"/start: ``` \"MyStub"”) 20.使用内联汇编时哪个关键字可以用来插入一个或多个字节( )C ``` A. _emti ``` ``` B. _exit ``` ``` C. _emit ``` ``` D. _macro ``` 最后修改:2021 年 01 月 23 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏