脱壳_详细_使用的方法_02
2016-06-13 14:17
253 查看
ZC: 需要将 每节课 里面 脱的每种壳 使用了哪些方法都记录下来
1、第6课
基础脱壳教程6:手脱EZIP 壳
(1)、单步
(A)、【510】【02:50】入口点是否找错
【550】【03:03】"d 4064F4"。向上拉,拉到全等于零的哪一个... 最后来到的是地址0x4062E4
【640】【03:33】importREC 显示的IAT为0x0062E0(ZC: 应该是正确的)
【750】【04:10】向下翻来到0x406520:6520-62E4=0x23C,importREC显示IAT大小为0x248,显然也是没有问题的
【923】【05:07】LoadPE-->"重建PE"
【1078】【05:58】重新来一次--> 先讲第二种方法 再来脱壳
(2)、ESP定律【1123】【06:13】
【1217】【06:45】脱壳(用LoadPE来脱)
【1275】【07:05】importREC 修复
【1325】【07:20】ZC: 可以运行了,那还要不要用LoadPE进行"重建PE"?这个"重建PE"是在什么情况下使用的?
有时候可以用重建PE的方法。
补充:
【33】【00:10】OD插件脱壳
【75】【00:25】LoadPE-->修正镜像大小 (镜像大小相同,但是不知是否必须做这一步)
【101】【00:33】importREC 修复
【155】【00:51】LoadPE-->"重建PE"
ZC: 我把 脱好壳 importREC修复过 能正常运行的 exe,用 LoadPE-->"重建PE" 操作了一下,exe反而不能运行了...
// ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
2、第7课
基础脱壳教程7:手脱tElock 0.98b1壳
1、最后一次异常法 【135】【00:45】
(1)、OD-->选项-->调试设置-->异常: 除了"忽略在KERNEL32中发生的内存访问异常"保留之外,去掉所有选项前面的"√"
(2)、(Shift+F9)*17次 程序跑飞
(3)、OD重新运行程序(Ctrl+F2)--> (Shift+F9)*16次(比 程序跑飞 少一次)-->【335】【01:51】堆栈窗口 ESP+4的地方有一个"SE 句柄" 的那一行--> 反汇编窗口中 转到(Ctrl+G) [堆栈窗口中 列"数值" 所对应的地址处]--> 在 反汇编窗口的这个位置 F2下断--> Shift+F9(OD就断在了这个断点上) --> 取消断点 --> F8单步(使用单步法继续) --> 【610】【03:22】来到OEP
(4)、【625】【03:28】用OD插件来脱壳
(5)、【672】【03:42】importREC 修复。他说他的汉化版的importREC无法修复,于是他使用英文原版的"Import RECconstructor v1.6 FINAL (C) 2001-2003 MackT/uCF"
【773】【04:17】26个无效指针--> 先用等级1来跟踪一下,就修复了一个指针--> 用等级3来修复,发现在这里直接用等级3来修复 irr直接卡死 (用OD插件脱壳出来的程序 用irr的等级3来修复 肯定会卡死掉,估计就是这个软件的BUG吧) (ZC: 应该是 irr加载了OD调试中的程序,才出现这个问题的吧?)
【915】【05:05】这么做:打开原来的没脱壳的程序,然后用irr去载入这个程序,然后再用 等级3来跟踪一下,这时候它就在跟踪了 就不会死掉(ZC: 我看到现象,貌似也在假死的嘛),等了一会 修复完毕,发现还有5个无法修复,直接剪切掉
【1093】【06:03】脱壳后的程序 可以运行了
ZC: 我观察,他的两个方式 的唯一差别就是: OD正在调试被加壳程序,且 程序处于"暂定状态"
2、模拟跟踪【1060】【07:00】
使用模拟跟踪法的前提是,程序没有 "SEH安装",但是 我们刚才看到 这个程序有很多个"SEH安装",理论上是 没法使用 模拟跟踪法 了,但是我们发现 17次(Shift+F9)之后 程序跑飞,也就是说 (Shift+F9)*16次之后 程序就没有"SEH安装"了
【1400】【07:47】尝试一下:(Shift+F9)*16次--> 用最后一次异常法使程序断在 第16次的异常的回调函数中 --> 【1500】【08:20】此时使用 模拟跟踪法:
"内存映射"窗口 --> 找到 SFX 的那个节(这个节的"地址"为0042C000) --> 在命令行输入"tc eip<0042C000" 回车 --> 发现 OD正在"跟踪",这个跟踪需要点时间 大家耐心点-->【1610】【08:55】直接跳到OEP
3、两次内存镜像【1665】【09:13】
OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口,找到"地址"为00401000的地方 (ZC: 我估计是他看到 ".rsrc"节的断点还在,于是想到 异常没有设置断在了异常里面了)
【1750】【09:42】将 异常设置中的 "忽略在KERNEL32中发生的内存访问异常"和"忽略(传递到程序)以下异常情况" 中的选项全部√上
【1775】【09:50】OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口(ZC: 此时看到".rsrc"节的断点已经没有了),找到"地址"为00401000的地方,F2,Shift+F9 --> 直接跳到OEP
重点还是修复
等级3跟踪。
3、第8课
基础脱壳教程8:手脱exe32pack壳
1、ESP定律
2、下断:BP IsDebuggerPresent
运行,取消断点
ALT+F9
计算ss+edi
转到OEP!
【565】【01:55】用OD插件脱,发现 可能修复完之后还是不能运行。就用LoadPE来脱一下
4、第9课
基础脱壳教程9:脱WinUpack加的壳
加条件断点的方法。
【170】【00:55】单步法
【310】【01:43】这个软件 以前用它脱过壳,知道 入口点就是 0x0040A41E。但是这里 跳转没有实现,【400】【02:13】强行让它(跳转)实现(改ZF标识),来到 入口点,LoadPE脱壳,无法运行,irr修复(0个模块,0个输入函数) 根本无法修复
【710】【03:57】又来到这里,其实这里已经在进行 输入表的重建工作了。... ... 【940】【05:13】当eax==0的时候,这个跳转实现,∴ 我们在这一行下一个条件断点:反汇编窗口-->右键-->断点-->条件:“eax==0” ---> F9
5、第10课
基础脱壳教程10:脱壳的基本思路及小结
壳的分类:压缩壳、加密壳
脱壳的基本方法:
1、单步
2、ESP定律
3、内存镜像
4、模拟跟踪(2类)
1) SFX跟踪
2) tc eip<XXXX
5、最后一次异常
6、特殊 【660】【03:40】
【518】【02:52】什么叫不脱壳破解:并不是说不用脱了,而是到达OEP之后,然后 直接去分析 直接去破解
【730】【04:03】练习一下
【815】【04:32】当拿到一个壳,毫无思路的时候,都可以使用 单步法 来跟
【893】【0457】这里 可以使用 ESP定律 了
【1035】【05:45】脱壳,2种方法:OD插件;LoadPE
【1068】【05:55】LoadPE脱壳,首先 修正镜像大小,当然 一些压缩壳 修不修正都无所谓,加密壳 必须修正。我们习惯上还是都修正一下,免得出现错误 --> 完整转存
【1138】【06:18】ImportREC 修复
【1222】【06:47】用OD插件来脱 --> ImportREC 修复
【1418】【07:52】脱壳 Pe Pcak 1.0,“pepack 1.0.exe”
【1780】【09:53】如果发现 ImportREC剪切指针之后 程序无法运行,可以尝试 用等级3 跟踪,还是不行 则尝试 手动查找 IAT
【1865】【10:22】用第2中方法:内存镜像法来脱壳
【2000】【11:05】脱壳 JDPack 1.x
【2075】【11:32】模拟跟踪法(SFX)
OD 选项--> 调试设置 --> SFX选项卡 --> “块方式跟踪真正入口处(不准确)”
重新载入 --> OD自动开始跟踪 --> 自动跳到OEP
【2160】【11:59】OD插件脱壳
【2292】【12:43】另外一种 模拟跟踪法
OD 选项--> 调试设置 --> SFX选项卡 --> “停止在自释放器的入口”
重新载入
“内存映射”界面 --> 找到"SFX"的那个节 --> 敲入命令“tc eip<0040E000” (ZC: 0040E000 就是 "SFX"的那个节 的"地址") --> OD显示正在跟踪(时间较长,机器也可能变比较卡)
【2435】【13:30】脱壳 PEncrypt 4.0 Gamma
【2488】【13:48】我们运行一下程序看看,(程序在OD中)能够运行 (ZC: 会不会有这种情况,程序平时能运行,用OD载入后 不能运行?应该可能会,可能是它检测到了调试器)
【2523】【14:00】内存镜像法
【2680】【14:53】单步法,遵循规则:向上跳转 不能让它实现,跑飞的CALL 要跟进去
【2740】【15:13】用 最后一次异常法
OD 选项--> 调试设置 --> 异常 --> 除了 "忽略在KERNEL32中发生的内存访问异常" 之外,其他所有的"√" 全部去掉。
重新载入 --> Shift+F9 3次,程序跑飞
重新载入 --> Shift+F9 2次 --> 堆栈窗口 找 "SE 句柄"(ZC: 对应的异常回调函数指针为0040CCD7) --> 反汇编窗口 Ctrl+G,输入0040CCD7 --> 在转到的地址 下F2断点 --> Shift+F9 --> 取消刚才的F2断点(ZC: 这时程序断在了F2断点处) --> 使用 单步法
【2990】【16:35】OD插件脱壳 / LoadPE脱壳+ImportREC修复 ,得到的程序都不能运行
【3120】【17:18】尝试 LoadPE的“重建 PE” --> 是行的通的
第2部分 “录像2.exe”
【110】【00:21】脱壳 fsg 1.33
【175】【00:35】ESP定律法
【578】【01:55】条件断点:反汇编窗口 某条指令上 右击-->条件,输入“[esi]==0”
【1250】fsg1.33.exe 用 PEiD的插件来脱壳,各种插件 自己搜集,【1358】【04:37】插件“Unpacker for FSG v1.33” 【1480】【04:55】脱壳成功
X
1、第6课
基础脱壳教程6:手脱EZIP 壳
(1)、单步
(A)、【510】【02:50】入口点是否找错
【550】【03:03】"d 4064F4"。向上拉,拉到全等于零的哪一个... 最后来到的是地址0x4062E4
【640】【03:33】importREC 显示的IAT为0x0062E0(ZC: 应该是正确的)
【750】【04:10】向下翻来到0x406520:6520-62E4=0x23C,importREC显示IAT大小为0x248,显然也是没有问题的
【923】【05:07】LoadPE-->"重建PE"
【1078】【05:58】重新来一次--> 先讲第二种方法 再来脱壳
(2)、ESP定律【1123】【06:13】
【1217】【06:45】脱壳(用LoadPE来脱)
【1275】【07:05】importREC 修复
【1325】【07:20】ZC: 可以运行了,那还要不要用LoadPE进行"重建PE"?这个"重建PE"是在什么情况下使用的?
有时候可以用重建PE的方法。
补充:
【33】【00:10】OD插件脱壳
【75】【00:25】LoadPE-->修正镜像大小 (镜像大小相同,但是不知是否必须做这一步)
【101】【00:33】importREC 修复
【155】【00:51】LoadPE-->"重建PE"
ZC: 我把 脱好壳 importREC修复过 能正常运行的 exe,用 LoadPE-->"重建PE" 操作了一下,exe反而不能运行了...
// ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
2、第7课
基础脱壳教程7:手脱tElock 0.98b1壳
1、最后一次异常法 【135】【00:45】
(1)、OD-->选项-->调试设置-->异常: 除了"忽略在KERNEL32中发生的内存访问异常"保留之外,去掉所有选项前面的"√"
(2)、(Shift+F9)*17次 程序跑飞
(3)、OD重新运行程序(Ctrl+F2)--> (Shift+F9)*16次(比 程序跑飞 少一次)-->【335】【01:51】堆栈窗口 ESP+4的地方有一个"SE 句柄" 的那一行--> 反汇编窗口中 转到(Ctrl+G) [堆栈窗口中 列"数值" 所对应的地址处]--> 在 反汇编窗口的这个位置 F2下断--> Shift+F9(OD就断在了这个断点上) --> 取消断点 --> F8单步(使用单步法继续) --> 【610】【03:22】来到OEP
(4)、【625】【03:28】用OD插件来脱壳
(5)、【672】【03:42】importREC 修复。他说他的汉化版的importREC无法修复,于是他使用英文原版的"Import RECconstructor v1.6 FINAL (C) 2001-2003 MackT/uCF"
【773】【04:17】26个无效指针--> 先用等级1来跟踪一下,就修复了一个指针--> 用等级3来修复,发现在这里直接用等级3来修复 irr直接卡死 (用OD插件脱壳出来的程序 用irr的等级3来修复 肯定会卡死掉,估计就是这个软件的BUG吧) (ZC: 应该是 irr加载了OD调试中的程序,才出现这个问题的吧?)
【915】【05:05】这么做:打开原来的没脱壳的程序,然后用irr去载入这个程序,然后再用 等级3来跟踪一下,这时候它就在跟踪了 就不会死掉(ZC: 我看到现象,貌似也在假死的嘛),等了一会 修复完毕,发现还有5个无法修复,直接剪切掉
【1093】【06:03】脱壳后的程序 可以运行了
ZC: 我观察,他的两个方式 的唯一差别就是: OD正在调试被加壳程序,且 程序处于"暂定状态"
2、模拟跟踪【1060】【07:00】
使用模拟跟踪法的前提是,程序没有 "SEH安装",但是 我们刚才看到 这个程序有很多个"SEH安装",理论上是 没法使用 模拟跟踪法 了,但是我们发现 17次(Shift+F9)之后 程序跑飞,也就是说 (Shift+F9)*16次之后 程序就没有"SEH安装"了
【1400】【07:47】尝试一下:(Shift+F9)*16次--> 用最后一次异常法使程序断在 第16次的异常的回调函数中 --> 【1500】【08:20】此时使用 模拟跟踪法:
"内存映射"窗口 --> 找到 SFX 的那个节(这个节的"地址"为0042C000) --> 在命令行输入"tc eip<0042C000" 回车 --> 发现 OD正在"跟踪",这个跟踪需要点时间 大家耐心点-->【1610】【08:55】直接跳到OEP
3、两次内存镜像【1665】【09:13】
OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口,找到"地址"为00401000的地方 (ZC: 我估计是他看到 ".rsrc"节的断点还在,于是想到 异常没有设置断在了异常里面了)
【1750】【09:42】将 异常设置中的 "忽略在KERNEL32中发生的内存访问异常"和"忽略(传递到程序)以下异常情况" 中的选项全部√上
【1775】【09:50】OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口(ZC: 此时看到".rsrc"节的断点已经没有了),找到"地址"为00401000的地方,F2,Shift+F9 --> 直接跳到OEP
重点还是修复
等级3跟踪。
3、第8课
基础脱壳教程8:手脱exe32pack壳
1、ESP定律
2、下断:BP IsDebuggerPresent
运行,取消断点
ALT+F9
计算ss+edi
转到OEP!
【565】【01:55】用OD插件脱,发现 可能修复完之后还是不能运行。就用LoadPE来脱一下
4、第9课
基础脱壳教程9:脱WinUpack加的壳
加条件断点的方法。
【170】【00:55】单步法
【310】【01:43】这个软件 以前用它脱过壳,知道 入口点就是 0x0040A41E。但是这里 跳转没有实现,【400】【02:13】强行让它(跳转)实现(改ZF标识),来到 入口点,LoadPE脱壳,无法运行,irr修复(0个模块,0个输入函数) 根本无法修复
【710】【03:57】又来到这里,其实这里已经在进行 输入表的重建工作了。... ... 【940】【05:13】当eax==0的时候,这个跳转实现,∴ 我们在这一行下一个条件断点:反汇编窗口-->右键-->断点-->条件:“eax==0” ---> F9
5、第10课
基础脱壳教程10:脱壳的基本思路及小结
壳的分类:压缩壳、加密壳
脱壳的基本方法:
1、单步
2、ESP定律
3、内存镜像
4、模拟跟踪(2类)
1) SFX跟踪
2) tc eip<XXXX
5、最后一次异常
6、特殊 【660】【03:40】
【518】【02:52】什么叫不脱壳破解:并不是说不用脱了,而是到达OEP之后,然后 直接去分析 直接去破解
【730】【04:03】练习一下
【815】【04:32】当拿到一个壳,毫无思路的时候,都可以使用 单步法 来跟
【893】【0457】这里 可以使用 ESP定律 了
【1035】【05:45】脱壳,2种方法:OD插件;LoadPE
【1068】【05:55】LoadPE脱壳,首先 修正镜像大小,当然 一些压缩壳 修不修正都无所谓,加密壳 必须修正。我们习惯上还是都修正一下,免得出现错误 --> 完整转存
【1138】【06:18】ImportREC 修复
【1222】【06:47】用OD插件来脱 --> ImportREC 修复
【1418】【07:52】脱壳 Pe Pcak 1.0,“pepack 1.0.exe”
【1780】【09:53】如果发现 ImportREC剪切指针之后 程序无法运行,可以尝试 用等级3 跟踪,还是不行 则尝试 手动查找 IAT
【1865】【10:22】用第2中方法:内存镜像法来脱壳
【2000】【11:05】脱壳 JDPack 1.x
【2075】【11:32】模拟跟踪法(SFX)
OD 选项--> 调试设置 --> SFX选项卡 --> “块方式跟踪真正入口处(不准确)”
重新载入 --> OD自动开始跟踪 --> 自动跳到OEP
【2160】【11:59】OD插件脱壳
【2292】【12:43】另外一种 模拟跟踪法
OD 选项--> 调试设置 --> SFX选项卡 --> “停止在自释放器的入口”
重新载入
“内存映射”界面 --> 找到"SFX"的那个节 --> 敲入命令“tc eip<0040E000” (ZC: 0040E000 就是 "SFX"的那个节 的"地址") --> OD显示正在跟踪(时间较长,机器也可能变比较卡)
【2435】【13:30】脱壳 PEncrypt 4.0 Gamma
【2488】【13:48】我们运行一下程序看看,(程序在OD中)能够运行 (ZC: 会不会有这种情况,程序平时能运行,用OD载入后 不能运行?应该可能会,可能是它检测到了调试器)
【2523】【14:00】内存镜像法
【2680】【14:53】单步法,遵循规则:向上跳转 不能让它实现,跑飞的CALL 要跟进去
【2740】【15:13】用 最后一次异常法
OD 选项--> 调试设置 --> 异常 --> 除了 "忽略在KERNEL32中发生的内存访问异常" 之外,其他所有的"√" 全部去掉。
重新载入 --> Shift+F9 3次,程序跑飞
重新载入 --> Shift+F9 2次 --> 堆栈窗口 找 "SE 句柄"(ZC: 对应的异常回调函数指针为0040CCD7) --> 反汇编窗口 Ctrl+G,输入0040CCD7 --> 在转到的地址 下F2断点 --> Shift+F9 --> 取消刚才的F2断点(ZC: 这时程序断在了F2断点处) --> 使用 单步法
【2990】【16:35】OD插件脱壳 / LoadPE脱壳+ImportREC修复 ,得到的程序都不能运行
【3120】【17:18】尝试 LoadPE的“重建 PE” --> 是行的通的
第2部分 “录像2.exe”
【110】【00:21】脱壳 fsg 1.33
【175】【00:35】ESP定律法
【578】【01:55】条件断点:反汇编窗口 某条指令上 右击-->条件,输入“[esi]==0”
【1250】fsg1.33.exe 用 PEiD的插件来脱壳,各种插件 自己搜集,【1358】【04:37】插件“Unpacker for FSG v1.33” 【1480】【04:55】脱壳成功
X
相关文章推荐
- jquery细节小记
- Android 颜色对照表
- 栈的相关操作
- 2016年各大安卓渠道最新商务合作通讯录
- HTML5新增主题结构元素之section
- spark在pycharm的搭建
- gitblit代码仓库
- Android Studio 自定义设置注释模板
- 什么是AJAX?
- ubuntu下phpstorm无法输入中文的解决办法
- html meta 标签
- 最适合初学者的语言是什么?
- jdk install
- iOS 开发 Mac 终端常用命令
- 阮一峰的网络日志
- Retrofit遇到Restful API怎么办
- 最适合初学者的语言是什么?
- Git命令小记
- 下一个五年你会在哪里,做着怎样的事
- EDIUS中的3D图层效果该如何制作