1、第11课
基础脱壳教程11:附加数据的处理方法 [Overlay]
工具:overlay最终版
WIN HEX或HEX WORKSHOP
【80】【00:25】壳"nSPack 1.3" 北斗的壳,最后有个 "[Overlay]"
【138】【00:45】OD载入
【180】【00:59】快速脱一下,直接 一步直达法
【245】【01:21】OD插件脱壳
【278】【01:32】发现脱壳后的111.exe 不能运行
【299】【01:39】LoadPE 修正镜像大小(没有进行"完整转存"的操作) 【327】【01:47】ImportREC修复
【374】【02:04】还是没法运行
【430】【02:22】处理附加数据,网上工具:overlay最终版 (卡巴 会报毒)
【488】【02:42】手动的方式来处理
使用工具:WIN HEX 或 HEX WORKSHOP
【627】【03:28】把要脱壳的程序 用"HEX WORKSHOP"打开,把数据滚动条 拉到最后,向上翻,一直 翻到第1次出现全部为0的数据的时候(大家耐心一点,不要错过了)(ZC: 这个全0 的数据区域需要多大?这里是不是在找最后一个节?最后一个节 就是放Overlay数据的地方吗?)(ZC: 可以弄个小工具 做这个事情,从后往前找),【800】【04:28】找到了,【828】【04:35】从这里开始复制,点住shift键,向下拉,拉到最后,右击 复制。Hex Workshop 文件 打开 选脱壳后的那个exe,同样拉到最后,在这个软件的最后,把附加数据 粘贴上去,Hex Workshop 文件 另存为 另一个名字的exe
【969】【05:22】处理完附加数据之后,PEiD查壳,发现 有"[Overlay]"了,发现 能够运行了,这就是处理附加数据的方法
ZC: 疑问:直接往上贴就行了?不需要在PE结构里面设置相关结构体的值?
ZC: 我暂时的理解是这样:本课的例子,加壳后 exe大小没变,于是 [Overlay] 的相对位置不变?之前不能运行的脱壳后的exe 大小是不是比 脱壳前 小?然后贴上附加数据之后 大小就一样了?待验证。
ZC: 如果真是这样的话,加壳前后 exe大小变化,那么 [Overlay] 的相对位置就会不同?直接往脱壳后的exe后面贴附加数据的话 还行的通不?
【1065】【05:53】再教 一种计算的方法
【1090】【06:03】用LoadPE打开 需要脱壳的程序,看一下 区段,找最后一个区段,【1210】【06:42】找 最后两个字段 ROffset&RSize 实际偏移量 和 实际大小(ZC: 这里的R是 "实际"/"Real" 的意思?V是 虚拟,R是 实际,貌似 蛮OK的...)。 【1280】【07:07】把 ROffset/RSize 的值相加 8800+400=8C00 【1360】【07:33】将 待脱壳exe 载入 Hex Workshop 中,右击 转到 偏移(Ctrl+G) 输入8C00(选"十六进制") 点击"转去",就是 我们刚才 手动翻 找到的位置了(ZC: 那也就是说 附加数据 在所有的节的后面,这样貌似 定位起来也方便),后面的操作和前面 手动的一样 【1495】【08:18】原来的好多空数据,最好 别去覆盖它 (ZC: 看到【1453】待脱壳的exe的文件大小为 0x83D20,【1565】已脱壳的exe+附加数据 总大小为0x9A120,确实是靠 最后一个节的边界 来定位附加数据的吗?PE头中没有 最后一个节之后数据的信息,∴ 附加数据 不会被加载到内存,因此 只能靠 最后一个节的ROffset&RSize 来定位附加数据)
2、第12课
基础脱壳教程12:自校验的去除方法
下断
bp CreateFileA
【125】【00:41】没找到 带自校验的软件,做了一个例子 讲个方法
【195】【01:05】ASPack的壳
【205】【01:09】OD载入,快速的脱一下壳
OD插件脱壳
【310】【01:43】PEiD 查看脱壳后的exe,VC++5.0。程序 能跑起来,但是报警 "程序被非法修改!"
【365】【02:01】ImportREC修复一下
【415】【02:18】运行exe 内存错误
【470】【02:35】ImportREC显示 输入表 只有一个kernel32.dll,一般情况下是不可能的。得 手动查找IAT
【510】【02:50】随便找个CALL,OD 命令行输入 "d 4251B8"(ZC: 这里就是kernel32.GetVersion),向上拉 找到全0的区域(此处为 IAT开始),【595】【03:18】大小 随便的写了0x1000
【673】【03:43】等级1 修复,直接剪掉 没法修复的
【727】【04:02】程序跑起来了,但是报警 "程序被非法修改!"
处理自校验的问题
【800】【04:28】把脱完壳的exe 也用另一个OD载入
【860】【04:47】下断 bp CreateFileA(文件刚开始的是否 读取文件)(ZC: 内存中的exe 读 硬盘上的exe,然后计算校验,然后再比较,他 应该用的是这种方式),两边都下断,两边都F9,(【915】【05:05】ZC:视频中看不全 参数,自己弄的时候可以看一下,前面猜的是否准。) 两边都 "返回到用户代码"
ZC: 他 把原来的校验值 放在哪里了?是放在了 全局变量里面了吗?可以自己跟一下 分析一下。
【1130】【06:16】一边 跳转没实现 【1180】【06:30】另一边 跳转实现了。只要把跳转改掉就行,改成 相反的跳转 或者 直接 NOP掉,保存修改
【1295】【07:10】程序 正常运行
【1473】【08:10】ZC: 原来的校验值 是通过参数传到这里的?貌似不对啊,这里是 不相等 则跳转
【1660】【09:12】本课 去自校验的方法,主要就是:开2个OD,两边同时 调试 看它们 在哪里执行了不同的 跳转。
有的 自校验 比较厉害
3、第13课
基础脱壳教程13:脱壳的简单应用——软件的汉化及DIY
1、先查壳 2、有壳就脱壳 3、对软件进行破解、汉化、美化等DIY工具:
resource hacker peexplorer getvbres ............VB类的汉化、DIY xnresource 等等
【208】【01:08】qqspirit.exe 壳FSG 2.0,用 resource hacker进行资源编辑
【288】【01:35】无法 进行资源编辑
【468】【02:35】QQ个性网名昵称查看器.exe (VB) 壳ASPack 2.12
【580】【03:13】脱壳
【640】【03:33】可以运行,不需要修复了
【760】【04:13】getvbres 打开 1.exe
修改资源
【950】【05:15】有长度限制 (ZC: 应该是指 修改的字符串的长度)
【1055】【05:50】更新当前程序,没法更新 ∵ 该软件没有注册
【1200】【06:40】getvbres 注册完毕,更新当前程序 成功 --> 显示"已改"
【1235】【06:51】运行软件,发现已经改过来了
【1300】【07:12】qqspirit.exe 壳 FSG 2.0
【1315】【07:18】快速 脱一下壳,ESP定律。LoadPE脱壳 ,ImportREC修复,手动查找IAT(直接 剪切 无效的) 【1595】【08:51】程序能够运行
【1655】【09:11】VC类的汉化、DIY:resource hacker、peexplorer、xnresource 都可以使用
【1700】【09:25】VC的程序一般用 resource hacker
脱壳之后,还是 不能 编辑资源
【1753】【09:43】∵ 手动脱壳 没有脱干净 (可能是 手动查找IAT的时候,将 IAT大小设置为0x1000 制造了很多垃圾指针)。
【1780】【09:52】用 FixRes.exe修复一下
【1837】【10:11】现在 resource hacker 可以编辑 资源了
【2025】【11:13】点击"编译脚本(C)",另存为
【2080】【11:33】exe资源信息 已经改过来了
【2127】【11:47】peexplorer 修改 VC的exe
【2245】【12:27】btengine.exe,Borland C++ 1999 没壳
【2315】【12:50】resource hacker 打开 btengine.exe,是用不了的,∵ BC++和Delphi 有一个特有数据 RCData
【2412】【13:23】peexplorer 打开 btengine.exe
【2747】【15:14】已经改过来了
【2852】【15:49】xnresource 打开 VC的exe
优点: 可以可视化的进行修改资源
【2960】【16:25】汇编比较厉害的话,还可以自己增加功能 (ZC: 怎么增加,他 没说...)
4、第14课
基础脱壳教程14:手脱ASPACK的变形壳
【430】【02:23】要用 Aspack变形壳0.1汉化版.exe 来加壳,exe必须先加Aspack壳(??\aspack212r\ASPACK.EXE)
【510】【02:49】PEiD查壳 什么也没有发现。"EP区段" 写的是 ".aspack"。
有时 PEiD 提示 "什么也没有发现",可以从 "EP区段" 来判断一下,当然也不一定准确 ∵ 区段(ZC: 名)可以自己改
【636】【03:31】OD载入
ESP定律 ==> 程序 直接跑飞了
【760】【04:13】OD重新载入,单步法 (近CALL 就F7跟进,远CALL就F8)(ZC: 那到底 多远的CALL算远CALL?)
【1138】【06:18】LoadPE脱壳,ImportREC修复
【1240】【06:52】可以运行
【1393】【07:43】Aspack变形壳0.1汉化版.exe,PEiD 提示 "什么也没有发现","EP区段" 写的是 ".皇后"...
【1473】【08:10】OD载入 Aspack变形壳0.1汉化版.exe
ESP定律 ==> 【1565】【08:41】向上的JMP,下一条指令 F4 ==> 程序跑飞
【1730】【09:36】来回的在 相同的(差不多)指令地址 JMP来JMP去 【1775】【09:51】而且在往上JMP的指令下面 还不能F4,看上去是一个死循环,但是我们发现程序是可以正常运行的 (ZC: OD中程序能跑飞,说明 这里不是壳对OD采取的措施)
【1860】【10:19】往上JMP的指令处 下F2断点,多F9几次 【1880】【10:26】有时向上跳,有时 向下跳,往下跳的时候 F8跟下去 也不行 (ZC: ∵它还不是最后一次从这里跳出去,程序还是会执行到这里,再跳。可以数 它跳了多少次(N次)后 程序跑飞,然后用N-1次 再F8跟 )
【2075】【11:30】(ZC: 和我想的一样) 用最后一次异常法的思路。【2190】【12:09】F9 * 58次 程序跑飞
【2300】【12:45】F9 * 57次 ==> 【2455】【13:37】ESP定律法 ==> 【2500】【13:55】来到OEP (ZC: 这个是什么程序的OEP?怎么不认识?...),OD插件脱壳,LoadPE 修正 镜像大小(习惯上 每次脱完壳 都修正一下 镜像大小 比较好),ImportREC修复 【2623】【14:33】程序可以运行
【2665】【14:47】主要讲授,如何处理 (ZC: 假性)死跳转的问题
5、第15课
基础脱壳教程15:ASPACK变形壳(续) 及 学会用脚本进行脱壳
【273】【01:31】QQ个性网名昵称查看器.exe 壳 ASPack 2.12
【295】【01:38】OD载入
【345】【01:55】OD -->插件 -->ODbgScript --> 运行脚本 --> 打开... --> 【422】【02:20】选择aspack_212.txt -->脚本自动运行,弹出2个对话框,自动运行到OEP --> OD插件脱壳 --> 程序运行OK
【607】【03:22】用 脚本“UPX,NsPacK,Aspack2.11-2.12 集成通用脱壳脚本.osc” 脱壳
【690】【03:50】用脚本脱壳 不一定准确,不一定到达真正的OEP 。壳 稍微有点变形 就没法到OEP了
【726】【04:01】memcollate.exe 用OD载入
用 脚本“UPX,NsPacK,Aspack2.11-2.12 集成通用脱壳脚本.osc” 脱壳,也是 壳 ASPack 2.12
【785】【04:21】脚本 来到了 假的OEP,【850】【04:43】向下脱 单步法 --> 程序跑飞
【939】【05:12】OD重新加载,用 脚本“UPX,NsPacK,Aspack2.11-2.12 集成通用脱壳脚本.osc” 脱壳,单步,【982】【05:27】近CALL F7
【1318】【07:18】来到 OEP 【1358】【07:32】OD插件脱壳,程序运行OK
C