首页
社区
课程
招聘
未解决 [求助]SafeNet 超级狗脱壳 300.00雪花
发表于: 2024-5-7 17:41 3784

未解决 [求助]SafeNet 超级狗脱壳 300.00雪花

2024-5-7 17:41
3784

学习SafeNet超级狗脱壳,有软狗。在网上学习了相关文章,但还是不会。得到的IAT表,OEP好像都不对,求高手指点。
10115600 8B4D 08 mov ecx,dword ptr ss:[ebp+0x8]
10115603 2BC8 sub ecx,eax
10115605 3BF1 cmp esi,ecx ; test1.<ModuleEntryPoint>
10115607 ^ 0F82 21FEFFFF jb test1.1011542E
1011560D 5F pop edi ; kernel32.7738FCC9
1011560E 5B pop ebx ; kernel32.7738FCC9
1011560F 8B45 F8 mov eax,dword ptr ss:[ebp-0x8]
10115612 5E pop esi ; kernel32.7738FCC9
10115613 C9 leave
10115614 C2 0400 retn 0x4 断点
10115617 3e:e9 a81136f0 jmp 004767c5 OEP ???

IAT表需要修复吗?
00477024 00000000
00477028 7738E2B0 jmp 到 KernelBa.GetLastError
0047702C 10119DD5 test1.10119DD5 <=== ???
00477030 00000000
00477034 00000000
00477038 773919A2 kernel32.773919A2
0047703C 10119457 test1.10119457
00477040 77388C32 kernel32.77388C32
00477044 773A2F60 jmp 到 KernelBa.DebugBreak
00477048 77390D82 kernel32.77390D82

地址:004767C5 这个OEP感觉不对呢,是有偷码?
004767C5 0300 add eax,dword ptr ds:[eax]
004767C7 2BC9 sub ecx,ecx ; test1.10116000
004767C9 B5 10 mov ch,0x10
004767CB 85C1 test ecx,eax ; test1.10122E33
004767CD 75 04 jnz short test1.004767D3
004767CF D1E1 shl ecx,1
004767D1 ^ 75 F8 jnz short test1.004767CB
004767D3 2BC1 sub eax,ecx ; test1.10116000
004767D5 59 pop ecx ; test1.004767F7
004767D6 5A pop edx ; test1.004767F7
004767D7 50 push eax ; test1.10122E33
004767D8 E8 01000000 call test1.004767DE


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 2
活跃值: (3869)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
00464E80    55              push ebp    // 这才是OEP

iat 肯定是需要修复的,可以手动一个个修复。
2024-5-9 02:02
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
找到了这个OEP,是标准的C++头,里面 GetVersion,GetCommandLineA 被改了,功力不够,修复不了
2024-5-9 21:20
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4

test2 也是类似的

00433860    55              push ebp                                 ; OEP

00433861    8BEC            mov ebp,esp
00433863    6A FF           push -0x1
00433865    68 C8434500     push test2.004543C8
0043386A    68 1C554300     push test2.0043551C
0043386F    64:A1 00000000  mov eax,dword ptr fs:[0]
00433875    50              push eax
00433876    64:8925 0000000>mov dword ptr fs:[0],esp
0043387D    83EC 10         sub esp,0x10
00433880    53              push ebx
00433881    56              push esi                                 ; test2.00400000
00433882    57              push edi                                 ; test2.00451869
00433883    8965 E8         mov dword ptr ss:[ebp-0x18],esp
00433886    E8 F5E10100     call test2.00451A80                   ; 应为 KERNEL32.GetVersion ~ 00433891
0043388B    6933 D28AD489   imul esi,dword ptr ds:[ebx],0x89D48AD2  <----- 乱码
00433891    15 CCCB9602     adc eax,test2.0296CBCC                      <----- 乱码
00433896    8BC8            mov ecx,eax
00433898    81E1 FF000000   and ecx,0xFF
0043389E    890D C8CB9602   mov dword ptr ds:[0x296CBC8],ecx         ; test2.02A73000
004338A4    C1E1 08         shl ecx,0x8
004338A7    03CA            add ecx,edx
004338A9    890D C4CB9602   mov dword ptr ds:[0x296CBC4],ecx         ; test2.02A73000
004338AF    C1E8 10         shr eax,0x10
004338B2    A3 C0CB9602     mov dword ptr ds:[0x296CBC0],eax
004338B7    6A 00           push 0x0
004338B9    E8 7C2F0000     call test2.0043683A
004338BE    59              pop ecx                                  ; test2.02A7FE33
004338BF    85C0            test eax,eax
004338C1    75 08           jnz short test2.004338CB
004338C3    6A 1C           push 0x1C
004338C5    E8 9A000000     call test2.00433964
004338CA    59              pop ecx                                  ; test2.02A7FE33
004338CB    8365 FC 00      and dword ptr ss:[ebp-0x4],0x0
004338CF    E8 982D0000     call test2.0043666C
004338D4    E8 48E00100     call test2.00451921                   ; 应为GetCommandLineA  
004338D9    2C A3           sub al,0xA3

不知怎么修复
2024-5-9 21:27
0
雪    币: 15080
活跃值: (7708)
能力值: ( LV5,RANK:77 )
在线值:
发帖
回帖
粉丝
qux
5
您好,这是自己加的壳吗?如果是自己加的壳,可以分享一下相关的工具和原程序吗?
我这边试了下,XVolkolak 可以脱掉这个壳,da4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Z5L8%4u0K6K9h3y4I4i4K6u0W2k6$3W2@1K9s2g2T1i4K6u0W2K9h3!0Q4x3V1k6Q4x3U0y4^5N6X3!0D9K9$3!0D9j5h3D9`.
2024-5-18 22:56
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
软件狗加壳工具,需要开发狗才能使用。
在学习脱这种壳,想自己手动完成
2024-5-20 21:33
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
对IAT表的修复,偷码都不熟,正在学习中。。。
2024-5-20 21:34
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
qux 您好,这是自己加的壳吗?如果是自己加的壳,可以分享一下相关的工具和原程序吗? 我这边试了下,XVolkolak 可以脱掉这个壳,fe6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Z5L8%4u0K6K9h3y4I4i4K6u0W2k6$3W2@1K9s2g2T1i4K6u0W2K9h3!0Q4x3V1k6Q4x3U0y4^5N6X3!0D9K9$3!0D9j5b7`.`. ...
这个工具能完美脱壳吗?
2024-5-20 22:27
0
雪    币: 15080
活跃值: (7708)
能力值: ( LV5,RANK:77 )
在线值:
发帖
回帖
粉丝
qux
9
MicroCoin 这个工具能完美脱壳吗?
看起来处理之后的导入表都是正常的,但我不知道原程序长什么样,所以不确定是不是完美脱壳
2024-5-21 08:12
0
雪    币: 38
活跃值: (187)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你提供的代码片段是分析的关键:

关于“OEP”:10115617处的jmp 004767c5并非真正的程序入口点。004767C5处的add eax, dword ptr ds:[eax]是一个无效指令,说明这里是外壳设置的一个“陷阱”或“中转站”。真正被偷走的原始程序入口代码,在后续才会被还原并跳转过去。

关于“IAT”:你抓取的IAT表中混杂了大量test1.10119DD5这类指向外壳模块自身的地址,这正是IAT混淆的证据。外壳将原始的API调用地址替换成了自己的“跳板函数”,用于在每次API调用时插入校验或反调试代码。

 核心思路与操作步骤
面对这种保护,你的核心策略需要从“找到OEP后DUMP”转变为 “跟踪并等待外壳完成所有修复”。

第一步:找到真正的原始OEP

在调试器中,从jmp 004767c5开始单步执行。注意,004767C5附近看似无意义的代码(如你列出的pop ecx, pop edx, push eax, call...)很可能是外壳在准备修复被窃取的代码。

重点跟踪那个call指令(004767D8)以及后续流程。真正的原始OEP通常会在一个大循环或递归解密过程结束后,通过一个jmp或retn指令跳转到程序原始的.text代码段。

当你跟踪到一个跳转,跳转目标地址是正常的函数开头(例如 55 8B EC 对应 push ebp; mov ebp, esp),并且该地址位于程序主模块(如test1.004xxxxx)的典型代码范围内时,这里才是真正的OEP。请记录下这个地址。

第二步:在正确时机修复IAT

时机是关键:不要在你现在的位置尝试修复IAT。必须在程序执行到真正的原始OEP之后,外壳才可能完成对IAT的最终修复。

找到真正OEP后,让程序运行几行代码,然后在OEP之后不远处下一个断点并中断。此时,内存中的IAT表可能已经被部分或全部修复。

使用 Scylla(或ImportREC)等工具附加到进程。填入你找到的真正OEP地址,然后点击 “IAT AutoSearch” 或 “Get Imports”。

如果仍然看到很多无效指针,尝试使用工具的 “Trace” 功能(如 Trace Level 1)来跟踪API调用,从而定位修复后的IAT。有时需要手动查找和修复部分项。

 高级技巧与工具建议
对抗反调试:此类外壳通常有强烈的反调试。建议使用 x64dbg 配合 ScyllaHide 插件,并隐藏调试器。在OllyDbg中,可能需要使用 StrongOD 或 PhantOm 插件。

利用脚本:手动跟踪整个过程非常耗时。强烈建议你在看雪论坛等安全社区,搜索针对 Sentinel Protection (SuperDog) 或特定版本号的脱壳脚本(例如OllyScript, x64dbg脚本)。成熟的脚本可以自动化处理代码还原和IAT修复。

“软狗”优势:你拥有“软狗”(软件模拟狗),这意味着你可以在调试器中多次重启、尝试,而不用担心硬件锁的损耗。充分利用这一点,大胆尝试不同的断点策略。

重要风险再次提醒
重申,这些技术知识仅限用于你在法律允许范围内的学习、研究,或对自己拥有合法版权的软件进行备份与兼容性分析。未经授权对他人软件进行脱壳和解密,可能涉及侵犯著作权,并面临法律风险。

如果你在跟踪过程中发现了新的、更可疑的跳转或循环,可以随时提供新的代码片段,我们可以继续一起分析。祝你研究顺利!
2025-12-2 03:11
0
游客
登录 | 注册 方可回帖
返回