wuqing1501 发表于 2012-8-16 12:09

Safengine Shielden v2.1.7.0脱壳视频

本帖最后由 wuqing1501 于 2012-8-16 15:21 编辑

Safengine Shielden v2.1.7.0脱壳视频
发完帖子后 发现电脑中了病毒 大家注意杀毒 抱歉啊!!
发完帖子后 发现电脑中了病毒 大家注意杀毒 抱歉啊!!
发完帖子后 发现电脑中了病毒 大家注意杀毒 抱歉啊!!
发完帖子后 发现电脑中了病毒 大家注意杀毒 抱歉啊!!


给使用SE的人的建议 一定要用SE的 api 处理全选项最大强度加密增加难度,最好使用SE的 VM把关键代码VM掉尽量不要使用免费版的授权因为免费版 是严重放水的 下面的方法只适合初学者 高手飞过吧


SE的加密强度是非常高的,不是我等可以搞定的,在此之所以脱壳,是因为听到朋友说有人在52破解
论坛发布了SE的脱壳(链接地址 http://www.52pojie.cn/thread-160458-1-1.html),也就怀着学
习的态度学习之。

因为样本的加壳难度非常的低(IAT基本上没有处理,没有DLL模拟,没有资源保护,没有使用VM也就
没有ANTIDUMP),故可以采用这样的方式处理,如果上面说的那么多种都有的话我是会放弃的。。。
之所以这么简单还做个视频教程,其实是朋友想让做个,顺便就传上论坛吧。。。
过程还是很简单的,大概也就看个流程吧。。
开始吧。
第一、遇到SE之类的所有的强壳的时候,首要的保证就是要有一个可以使软件正常运行的OD。。
OK 可以正常运行。。
第二、开始调试
对CODE段下内存访问断点,为什么不用别的断点?个人调试的经验吧,内存写入断点不会被ANTI
F9运行吧,一直运行到什么时候呢?看数据窗口,等CODE段的内容全部解码。。。
这个样本因为加密简单,没有保护资源等等,所以直接下段运行后code段已经解码了。。
如果加密复杂的就要一直等到CODE段解码,并且IAT 全部写入以后 这个时候就说明 已经解码完毕并
处理完了IAT 马上要到OEP了,所以这个时候我们对code段下个内存访问断点,然后F9吧,直到软件
停止在oep附近。

OEP
00401806    55            PUSH EBP                                 ; 其实这里才是OEP
00401807    8BEC            MOV EBP,ESP                              ; OEP 附近
00401809    6A FF         PUSH -1
0040180B    68 10244000   PUSH 00402410
00401810    68 00184000   PUSH 00401800
00401815    64:A1 00000000MOV EAX,DWORD PTR FS:
0040181B    50            PUSH EAX
0040181C    64:8925 0000000>MOV DWORD PTR FS:,ESP
第三、修复IAT吧
oep 到了以后 就不停的F7吧,对于加密简单的,是可以这样处理的。。。
看视频吧,
这里,看看返回的结果是什么?是不是DLL基址呢?是不是相当于LoadLibraryA 的效果呢

004F523D    E8 4DB8F1FF   CALL 00410A8F
004F5242^ E9 80FEFFFF   JMP 004F50C7
00410A8F- E9 E7123F7C   JMP kernel32.LoadLibraryA
0012FF08   004F5141/CALL to LoadLibraryA from se.004F513C
0012FF0C   004F5158\FileName = "MSVCRT.dll"
看到了吧 这里修改以后 刚好是 调用的 那就说明这样调用是可以的没有错的
F9吧
继续F7 看看这个地址 过后是不是EAX就是API地址?是不是相当于GetProcAddress?

004F50DB    50            PUSH EAX
004F5052    E8 7AE0F1FF   CALL 004130D1
004F5057^ EB BF         JMP SHORT 004F5018
004130D1- E9 6A7D3F7C   JMP kernel32.GetProcAddress
0012FF04   004F516B/CALL to GetProcAddress from se.004F5166
0012FF08   77BE0000|hModule = 77BE0000 (msvcrt)
0012FF0C   004F5189\ProcNameOrOrdinal = "__p__fmode"

这里很关键 如果有时候 iAT 加密的时候加密强度比较高 这里出现的就不是 API的名称 这种方法也就失效了。。。
不好意思刚才误按了F2 重来一下吧。继续上次的。。

再来看一个API 继续F7

重新来一遍吧因为有些代码已经执行过了。。
直接去OEP吧
做完这些后 该上UIF了
OK了
用Ir修复一下IAT吧
修复了 把CODE段 以及SE段 修改为可写
可以运行的
但是这个时候 不能跨平台的 因为 IAT的调用是 偏位的 我们看下
004FC0087C80AE40kernel32.GetProcAddress
004FC00C7C801629kernel32.DeviceIoControl
004FC0107C80B741kernel32.GetModuleHandleA
004FC01400000000
004FC01877BF9CC5msvcrt.??2@YAPAXI@Z
004FC01C77C05C94msvcrt._except_handler3
004FC02077C04E51msvcrt.__dllonexit
004FC02477BFC407msvcrt.malloc
004FC02877C323D8OFFSET msvcrt._adjust_fdiv
004FC02C77C09D67msvcrt._initterm
004FC03077C16F70msvcrt.memcpy
004FC03477C180F9msvcrt.wcsrchr
004FC03877C17A90msvcrt.strncpy
004FC03C00000000
004FC04077D1A9B6user32.wsprintfW
004FC04400000000
004FC04876D32841iphlpapi.GetInterfaceInfo
004FC04C00000000
004FC05077DA6C27advapi32.RegCloseKey
004FC05477DA7ABBadvapi32.RegQueryValueExA
004FC05877DA7852advapi32.RegOpenKeyExA

$ ==>    >7C9300C4ntdll.RtlAllocateHeap
$+4      >7C801D7Bkernel32.LoadLibraryA
$+8      >7C80AE40kernel32.GetProcAddress
$+C      >7C801629kernel32.DeviceIoControl
$+10   >7C80B741kernel32.GetModuleHandleA
$+14   >00000000
$+18   >77BF9CC5msvcrt.??2@YAPAXI@Z
$+1C   >77C05C94msvcrt._except_handler3
$+20   >77C04E51msvcrt.__dllonexit
$+24   >77BFC407msvcrt.malloc
$+28   >77C323D8OFFSET msvcrt._adjust_fdiv
$+2C   >77C09D67msvcrt._initterm
$+30   >77C16F70msvcrt.memcpy
$+34   >77C180F9msvcrt.wcsrchr
$+38   >77C17A90msvcrt.strncpy
$+3C   >00000000
$+40   >77D1A9B6user32.wsprintfW
$+44   >00000000
$+48   >76D32841iphlpapi.GetInterfaceInfo
$+4C   >00000000
$+50   >77DA6C27advapi32.RegCloseKey
$+54   >77DA7ABBadvapi32.RegQueryValueExA
$+58   >77DA7852advapi32.RegOpenKeyExA
$+5C   >00000000
第一次录这个玩意 竟然断了三次,因为录像过程中同事发消息被录了所以截取了一段 重新录 大家将就看吧。。。
继续吧
但是看下IR修复的是 004ff000而程序中的调用是 004FC000 需要修改一下这里。
我偷懒了 找块空地吧写这个代码
修正一下OEP
00401A30      60            PUSHAD
00401A31      B9 5C000000   MOV ECX,5C
00401A36      BE 00F04F00   MOV ESI,<&kernel32.HeapAlloc>
00401A3B      BF 00C04F00   MOV EDI,004FC000
00401A40      F3:A4         REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
00401A42      61            POPAD
00401A43    ^ E9 BEFDFFFF   JMP <ModuleEntryPoint>
可以运行了。。。
虚拟机 测试一下
可以运行 可以跨平台了。。
这次就到这里了第一次做的很不好 希望大家不要介意 其实这个就是大概的流程
对于 加密复杂的 如果有DLL模拟的话只要 开始先去掉DLL模拟到OEP以后 修正一下 资源 就可以了
但是对于 API 全选项 高强度加密的 我就搞不定了对于ANTIDUMP的 我也搞不定的就这样吧
下次见。。。。。。。。
笨笨鼠。。

下载地址:
http://dl.dbank.com/c0qbzgks9a

http://115.com/file/c2sbz0lt#
Safengine Shielden v2.1.7.0脱壳视频.rar

Sound 发表于 2012-8-16 12:15

这个样本 貌似是最小保护、

a13686593572 发表于 2012-8-16 12:19

这样都能抢着板凳,前排出名~~学习了

wuqing1501 发表于 2012-8-16 12:21

Sound 发表于 2012-8-16 12:15 static/image/common/back.gif
这个样本 貌似是最小保护、

却是是最小保护 的本来觉得太简单了 就不想做了 朋友想看 就费点事 录一下而已 加密强度高的 搞不定 我是抛砖 等着引玉呢

Chief 发表于 2012-8-16 12:31

如果是最小保护的话,不脱壳用Patch的话反而更容易。
不过楼主分享精神可佳。期待更多视频教程。

kuwo911 发表于 2012-8-16 13:07

感谢分享精彩教程   期待楼主更多作品分享

291196966 发表于 2012-8-16 20:11

解压要密码?

963705 发表于 2012-8-16 17:23

下来学习下。。SE好强大

阿杰 发表于 2012-8-16 13:59

高手在民间啊。。

leisurely 发表于 2012-8-16 13:09

学习一下牛人的教程,谢谢分享了~~

q5293435 发表于 2012-8-16 13:38

商业版SE怎么过OD

Ruin 发表于 2012-8-16 13:51

晴师傅 果然威武

Ruin 发表于 2012-8-16 13:51

晴师傅 果然威武
页: [1] 2 3 4 5
查看完整版本: Safengine Shielden v2.1.7.0脱壳视频