随笔分类 -  加壳与脱壳

脱壳——修复加密IAT
摘要:脱壳——修复加密IAT 对两个练手程序进行脱壳修复加密IAT(其实是一个程序,只是用了几种不同的加壳方式) 第一个程序 Aspack.exe 下载链接:https://download.csdn.net/download/weixin_43916597/18372920 分析程序信息 首先先查看这个 阅读全文
posted @ 2021-05-04 19:39 Sna1lGo 阅读(1410) 评论(0) 推荐(0)
脱壳——UPX脱壳原理(脱壳helloworld)
摘要:脱壳——UPX脱壳原理 脱壳步骤 1 找到OEP 2 dump(导出)内存文件 3 修复 1 找到OEP 1 程序运行先从壳代码运行,壳代码执行完之后会跳转到真正的OEP,也就是是说第一步,首先要找到真正的OEP 如何找到OEP 大部分情况下,壳代码会在一个单独的区段里面,壳代码执行完一定会跳转到原 阅读全文
posted @ 2021-05-03 17:36 Sna1lGo 阅读(7135) 评论(0) 推荐(2)
脱壳与加壳-加壳-7-修复重定位表
摘要:脱壳与加壳-加壳-7-修复重定位表 前面采用的方案是:给被加壳的程序添加一个新的区段,然后使用link命令把壳代码的数据段和代码段全部合并在一起合并到.text段里面,然后把壳.dll文件加载到程序的内存,然后把壳的代码段copy到被加壳的程序的壳代码段里面,然后读取壳.dll文件中的.reloc重 阅读全文
posted @ 2021-04-26 00:55 Sna1lGo 阅读(962) 评论(0) 推荐(0)
脱壳与加壳-加壳-6-代码实现加密导入表
摘要:脱壳与加壳-加壳-6-代码实现加密导入表 BOOL CPeUtil::GetImportTable(){ DWORD TableLen = 0; //1得到导入表地址 PIMAGE_IMPORT_DESCRIPTOR pImportTable = (PIMAGE_IMPORT_DESCRIPTOR) 阅读全文
posted @ 2021-04-25 22:37 Sna1lGo 阅读(295) 评论(0) 推荐(0)
脱壳与加壳-加壳-5-加密导入表
摘要:脱壳与加壳-加壳-5-加密导入表 导入表知识可以:https://www.cnblogs.com/Sna1lGo/p/14461530.html 步骤 1 找到导入表 2 提取导入表的数据结构,自己用自己的数据结构来存储,把原本的导入表的数据结构加密,不让操作系统来处理 3 把存储的操作系统的数据结 阅读全文
posted @ 2021-04-25 21:21 Sna1lGo 阅读(396) 评论(0) 推荐(0)
脱壳与加壳-加壳-4-修复dll文件的重定位表
摘要:脱壳与加壳-加壳-4-修复dll文件的重定位表 1 先将一个dll文件load到内存,然后找到dll文件的第一个区段也就是我们的代码段加数据段也就是壳代码 2 然后将这个dll的第一个区段复制到加壳程序的最后一个区段 3 由于ImageBase发生变化 需要修复重定位表,要修复重定位表就得获取重定位 阅读全文
posted @ 2021-04-12 00:54 Sna1lGo 阅读(689) 评论(0) 推荐(0)
脱壳与加壳-加壳-3-加壳代码实现
摘要:脱壳与加壳-加壳-3-加壳代码实现 壳代码如何存在 壳代码以什么形式存在?壳代码,就是一段指令,我们这里将其编写成为一个dll文件,把他的代码段,当成是壳代码 但是dll文件也是一个PE文件,也会有各自各样的区段,所以可以采用link指令,把所有区段合并成一个区段,然后把这个区段复制过去复制到前面开 阅读全文
posted @ 2021-04-11 01:36 Sna1lGo 阅读(655) 评论(0) 推荐(0)
脱壳与加壳-加壳-2-加密解密
摘要:脱壳与加壳-加壳-2-加密解密 加壳涉及的两大对象: 1、被加壳的程序 2、壳代码 1 处理被加壳的程序 1 添加区段 2 加密目标程序的区段 3 将壳代码写入新的区段 4 修改模板程序的入口点 上一章我们已经解决了添加区段 2 壳代码 2.1壳代码的功能: 2.1.1 解密功能 对加密的代码进行解 阅读全文
posted @ 2021-04-09 23:51 Sna1lGo 阅读(310) 评论(0) 推荐(0)
脱壳与加壳-加壳-1-手工实现添加区段
摘要:脱壳与加壳-加壳-1-手工实现添加区段 给壳代码开辟空间来存放壳代码 方法1:在空白的区段头到区段的位置添加区段头 在区段的最后一个后面开辟新的区段 步骤 1 读取文件 2 创建buff存放PE文件镜像 3 解析PE(DOS头、NT头、可选PE头、标准PE头) 4 添加区段、修改相关PE某些字段值 阅读全文
posted @ 2021-04-07 22:42 Sna1lGo 阅读(422) 评论(0) 推荐(0)
加壳与脱壳-添加壳代码的几种方式
摘要:加壳与脱壳-添加壳代码的几种方式 上一次讲的方式是在区段头后面继续添加区段头,但是万一区段头的后面没有连续的空间怎么办 所以这里有好几种方式来处理 利用Dos Stub空间 PE文件里面有一段Dos Stub空间,没有什么用,所以可以利用起来作为加壳处理 可以通过把本来的 这一截(PE头+区段头)全 阅读全文
posted @ 2021-04-05 22:41 Sna1lGo 阅读(404) 评论(0) 推荐(0)
加壳与脱壳--将ShellCode写入PE
摘要:加壳与脱壳--将ShellCode写入PE PE文件代码段的空白区不足以存放我们的Shellcode的时候就需要添加新的区段来保存我们的shellcode 如何给PE文件添加新的区段 1 添加一个空白区段 2 添加一个区段头 3 修改numberofsections(区段数量) 4 修改ImageS 阅读全文
posted @ 2021-04-05 21:16 Sna1lGo 阅读(508) 评论(0) 推荐(0)
加壳与脱壳----壳的原理
摘要:加壳与脱壳 壳的原理 PE结构体 1 PE文件结构图 PE文件用硬盘到能运行起来经历的步骤 1 将pe文件copy到内存 2 按内存对齐值对齐 3 加载dll 4 修复 IAT、重定位表 程序允许 操作系统通过读取PE文件的addressOfEntryPoint(OEP)+PE文件的imagebas 阅读全文
posted @ 2021-04-05 18:47 Sna1lGo 阅读(911) 评论(0) 推荐(0)