飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12307|回复: 17

[原创] MoleBox Pro 未注册版加壳去NAG问题(3楼公开方法)

[复制链接]

该用户从未签到

发表于 2007-10-16 10:42:05 | 显示全部楼层 |阅读模式
原程序是NsPacK V3.7壳(就是前几天讨论的那个加密超强的那个程序),我加了MoleBox Pro的最新版,想研究下去NAG,分析了一下,卡到了壳区段的自效检上了。
MoleBox Pro 2.2951 released on October 12, 2007
Download:http://www.molebox.com/last/MoleBoxProSetup.exe

0047B253 >  E8 00000000     CALL PB_exe.0047B258                     ; F8
0047B258    60              PUSHAD
0047B259    E8 4F000000     CALL PB_exe.0047B2AD                     ; F7
//
0047B2AD    E8 5EFBFFFF     CALL PB_exe.0047AE10                     ; F7
//
0047AE10    8B4424 04       MOV EAX,DWORD PTR SS:[ESP+4]             ; PB_exe.0047B25E
0047AE14    50              PUSH EAX
0047AE15    8B4424 04       MOV EAX,DWORD PTR SS:[ESP+4]
0047AE19    50              PUSH EAX
0047AE1A    E8 F1FCFFFF     CALL PB_exe.0047AB10                     ; 这里将对文件进行效检
0047AE1F    58              POP EAX
0047AE20    E8 3B070000     CALL PB_exe.0047B560                     ; NAG在这个Call出现
0047AE25    870424          XCHG DWORD PTR SS:[ESP],EAX
0047AE28    58              POP EAX
0047AE29    894424 24       MOV DWORD PTR SS:[ESP+24],EAX
0047AE2D    61              POPAD
0047AE2E    58              POP EAX
0047AE2F    58              POP EAX
0047AE30    FFD0            CALL EAX                                 ; EAX即OEP
0047AE32    E8 5DAF0000     CALL PB_exe.00485D94

跟进CALL 0047AB10 :
                  
0047AD71    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]            ; ECX是原数据
0047AD74    83C4 0C         ADD ESP,0C
0047AD77    3BC1            CMP EAX,ECX                              ; 第一处效检在这里
0047AD79    74 11           JE SHORT PB_exe.0047AD8C
0047AD7B    6A 00           PUSH 0
0047AD7D    6A 00           PUSH 0
0047AD7F    6A 00           PUSH 0
0047AD81    68 FB0000EF     PUSH EF0000FB
0047AD86    FF15 10A04800   CALL DWORD PTR DS:[<&KERNEL32.RaiseExcep>; kernel32.RaiseException
0047AD8C    8B15 14034900   MOV EDX,DWORD PTR DS:[490314]
0047AD92    56              PUSH ESI
0047AD93    53              PUSH EBX
0047AD94    52              PUSH EDX
0047AD95    FF15 F8024900   CALL DWORD PTR DS:[4902F8]               ; kernel32.FlushInstructionCache
0047AD9B    8B35 3CA04800   MOV ESI,DWORD PTR DS:[<&KERNEL32.LocalFr>; kernel32.LocalFree
0047ADA1    57              PUSH EDI
0047ADA2    FFD6            CALL ESI
0047ADA4    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
0047ADA7    50              PUSH EAX
0047ADA8    FFD6            CALL ESI
0047ADAA    8B35 6CA04800   MOV ESI,DWORD PTR DS:[<&KERNEL32.Initial>; kernel32.InitializeCriticalSection
0047ADB0    68 B80A4900     PUSH PB_exe.00490AB8
0047ADB5    FFD6            CALL ESI
0047ADB7    68 C0054900     PUSH PB_exe.004905C0
0047ADBC    FFD6            CALL ESI
0047ADBE    E8 9D0A0000     CALL PB_exe.0047B860                     ; 若修改壳区断 程序到这里挂掉

只有运行过CALL 0047AB10,下方CALL 0047B560的数据才会出现,这时我们跟进CALL 0047B560去NAG:
                                      
0047B833    6A 00           PUSH 0                                    ; 或者将这里 修改为 JMP 47B83A跳过Nag
0047B835    E8 56080000     CALL PB_exe.0047C090                      ; NAG在这里出现 nop掉即可
0047B83A    A1 E44E4900     MOV EAX,DWORD PTR DS:[494EE4]
0047B83F    83C4 0C         ADD ESP,0C
0047B842    85C0            TEST EAX,EAX
0047B844    74 0D           JE SHORT PB_exe.0047B853
0047B846    6A 00           PUSH 0
0047B848    6A 00           PUSH 0
0047B84A    6A 00           PUSH 0
0047B84C    50              PUSH EAX
0047B84D    FF15 C0044900   CALL DWORD PTR DS:[4904C0]                ; USER32.PostMessageA
0047B853    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
0047B856    8BE5            MOV ESP,EBP
0047B858    5D              POP EBP
0047B859    C3              RETN


程序保存后,由于壳区段的效检,导致无法运行,不清楚这个效检是如何做到的,但使用Loader即可去掉NAG(PB这个程序可能是反Loader的)。

PB.rar

182.57 KB, 下载次数: 18, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!

该用户从未签到

发表于 2007-10-16 11:29:52 | 显示全部楼层
看了下 没搞定 简单的处理掉CALL 软件不运行
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-10-16 11:31:05 | 显示全部楼层
Oh Yes! 搞定了  :loveliness:   大家先慢慢分析 三天后我公布我的方法 爽死我了 搞了两个多小时 终于有结果了



思路公开:找到NAG的CALL是很简单的 但是为什么保存后软件就无法运行呢? 而调试到该CALL的时候就可以跳过NAG呢?
这就是值得考虑的地方,后来发现:

0047AE1A    E8 F1FCFFFF     CALL PB_exe.0047AB10                     ; 这里将对文件进行效检
0047AE1F    58              POP EAX
0047AE20    E8 3B070000     CALL PB_exe.0047B560                     ; NAG在这个Call出现

只有将CALL 0047AB10运行完毕后,   这个出现NAG的CALL 0047B560中才会有数据,所以我们要等第一个CALL运行完毕的时候用SMC打补丁来去掉NAG,剩下的就好办了,就是在壳区找一处空白地址,刚开始没把空白地址找对,走了不少弯路,还怀疑过这种思路是否可行,找对空白地址后一切就都OK了.

下方的方法仅适合与MoleBox加壳时不选择 CRC效检一项的壳,如果选择这里的话 还有过CRC效检,这我研究了一下午也没过去,汗~~ 大约修改了N处眼看就要OK了,最后又出现一个CALL,实在是搞不下去了,就放弃了,我的思路就是把第二个CALL出错的数据全部JMP出来SMC,但修改的地址数太多了,即便的OK一个,该方法也无法推广,最好的方法就是找到效检的地方然后就好办了.            

带CRC效检的那个加壳文件见这里:
https://www.chinapyg.com/viewthread.php?tid=20499


定位Nag 并确定SMC数据地址:0047B833    6A 00           PUSH 0

0047AE19    50              PUSH EAX
0047AE1A    E8 F1FCFFFF     CALL PB_exe.0047AB10
0047AE1F    58              POP EAX                                  ; 修改为JMP 47AF69
0047AE20    E8 3B070000     CALL PB_exe.0047B560
0047AE25    870424          XCHG DWORD PTR SS:[ESP],EAX
0047AE28    58              POP EAX
0047AE29    894424 24       MOV DWORD PTR SS:[ESP+24],EAX
0047AE2D    61              POPAD
0047AE2E    58              POP EAX
0047AE2F    58              POP EAX
0047AE30    FFD0            CALL EAX
0047AE32    E8 5DAF0000     CALL PB_exe.00485D94

0047AF69    58              POP EAX                                  ; 这里还原覆盖的数据     
0047AF6A    66:C705 33B8470>MOV WORD PTR DS:[47B833],5EB             ; SMC数据
0047AF73    E8 E8050000     CALL PB_exe.0047B560
0047AF78  ^ E9 A8FEFFFF     JMP PB_exe.0047AE25                      ; 返回到原CALL的下一行代码 因为返回CALL时要返回到这里


Why?  CALL 0047AB10这个CALL的作用(这里不是自效检 判断失误)就是生成这个CALL 0047B560地址中的数据 所以我们即便是修改了也是徒劳
PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2018-6-6 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-10-16 11:36:30 | 显示全部楼层
    庆贺一下~/:09
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-7-31 05:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-10-16 17:59:05 | 显示全部楼层
    搬个凳子来等着看:lol:
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-10-16 20:38:51 | 显示全部楼层
    /:L 9999
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-10-16 21:00:43 | 显示全部楼层
    用SMC去修改0047B835    E8 56080000     CALL PB_exe.0047C090         
    不能运行   

    期待答案
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2007-10-16 22:48:17 | 显示全部楼层
    等破文的不是好孩子 打PP /:014  大家继续哦 独立解决 深度思考
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-24 21:35
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2007-10-17 00:15:25 | 显示全部楼层

    回复 8# 的帖子

    你不说搞出来,我可能还去看看,当然也可能搞不定.兄弟说搞定了,哈哈,我就睡觉去了.
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-2-17 18:27
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-10-17 09:16:37 | 显示全部楼层
    原来楼上都是挑战极限的人,呵呵.


    我也等着答案,呵呵,家里电脑出BUG了,无法调试壳了!:loveliness:
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表