本帖最后由 hjm666 于 2019-3-4 17:31 编辑
今天遇到一个FSG 1.0版本的老壳,FSG虽然以前有脱过2.0等版本的壳,如果这个和其它我遇到过的版本的没有什么不一样的话也没有意思拿出来写,也搜了下论坛上没有这个版本的信息也就写写看了
壳的信息:
入口地址:
刚入手上了一遍万能的esp定律没有奏效,然后手动过了一遍发现这个壳有点绕也没有找到有用的地方,同时也没有找到2.0版本等的特征3连跳转等,于是有仔细搜索了下FSG壳的帖子等
总结了两点:
1、OEP最终是由一个大跳,跳过去的
2、FSG有多个循环跳转确认是否前往OEP
开始脱壳:
还是由ESP定律上手
[Asm] 纯文本查看 复制代码 00405000 > BB D0014000 mov ebx,Lab01-03.004001D0
00405005 BF 00104000 mov edi,Lab01-03.00401000 ; 入口地址
0040500A BE 00404000 mov esi,Lab01-03.00404000
0040500F 53 push ebx ; Lab01-03.004001D0
00405010 E8 0A000000 call Lab01-03.0040501F
00405015 02D2 add dl,dl
00405017 75 05 jnz short Lab01-03.0040501E
00405019 8A16 mov dl,byte ptr ds:[esi]
0040501B 46 inc esi ; Lab01-03.00404000
0040501C 12D2 adc dl,dl
0040501E C3 retn
0040501F FC cld
00405020 B2 80 mov dl,0x80
00405022 A4 movs byte ptr es:[edi],byte ptr ds:[esi]
00405023 6A 02 push 0x2
00405025 5B pop ebx ; kernel32.7C817077
F4到 push ebx 随后F8 用上 ESP定律 ,然后让程序跑起来
停下的地方没有看见大跳,并且手动向下F8后发现是一个循环跳,无解
于是我并没有删除硬件访问断点,继续让程序跑起
停在了我们开始esp定律的地方,同时程序没有跑飞,也没有正式开始运行,于是我第三次让程序跑起来
]
程序没有跑飞,也没有正式开始运行,继续跑起来
程序跑了几次即使进入了程序领空也没有跑飞,也就还是继续跑,跑的同时也注意停下的地方是否有大跳,或者是感觉快到OEP时,手动向下寻找
最终发现大跳,随之跟过去
看到熟悉的代码知道已经找到OEP。。。。。
随后脱之。。。。。。。。
终。。。。。 |