飘云阁(PYG官方)

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 301|回复: 4

[原创] mindManager 2019 32bit 安全分析

[复制链接]
  • TA的每日心情
    郁闷
    2019-10-1 14:20
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2019-10-1 14:37:17 | 显示全部楼层 |阅读模式
    目标软件:mindManager 2019 32bit
    使用工具:x32dbg
    初学入门,只为学习,如有侵权或不正确的地方还忘指教。


    找一个假的注册码,mindManager认为是真的注册码
    例如:MP78-812-2P94-D1DM-35F3
    输入密钥,mindManager会弹出错误,一般这个时候可以在MessageBoxW上下断点
    通过调用栈往上找,直到在调用函数里发现如下字样,基本上就到关键点了
    FF15 9C7FEE00  | CALL DWORD PTR DS:[<&?SendRegistrationAttemptEvent@CmjFeedbackManager@@SA_NABV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z>]
    往下看,看到这几个比较指令,其中只有0x1才是正确的,所以把比较0x1,直接改为jmp指令
    00A4C80F       | CALL <mindmanager.sub_A4C640>
    00A4C814       | MOV DWORD PTR SS:[EBP-0x2C],EAX
    00A4C817       | MOV EDX,DWORD PTR SS:[EBP-0x2C]
    00A4C81A       | MOV DWORD PTR SS:[EBP-0x14],EDX
    00A4C81D <mind | CMP DWORD PTR SS:[EBP-0x14],0x0
    00A4C821       | JE mindmanager.A4C83C         
    00A4C823       | CMP DWORD PTR SS:[EBP-0x14],0x1
    00A4C827       | JE mindmanager.A4C989          <------------------直接改为jmp
    00A4C82D       | CMP DWORD PTR SS:[EBP-0x14],0x2
    00A4C831       | JE mindmanager.A4C9F3         
    00A4C837       | JMP mindmanager.A4CA55            
    以上的步骤完成了注册时的验证,会把注册信息写入注册表。
    程序在重启的时候还会进行检测。既然是写入注册表的,那就要在几个读注册表的API上下断点
    如:
    <kernel32.dll.RegOpenKeyExW>                   已启用       MOV EDI,EDI                                         0     
    <kernel32.dll.RegCloseKey>                     已启用       MOV EDI,EDI                                         0     
    <kernel32.dll.RegCreateKeyExW>                 已启用       MOV EDI,EDI                                         0     
    <advapi32.dll.RegQueryValueA>                  已启用       PUSH 0x24                                           0     
    <advapi32.dll.RegQueryValueW>                  已启用       PUSH 0x24                                           0     
    但是,经过实践,都断不下来。那就要想别的办法了。
    按常理,它的注册验证算法在启动时调用的和注册时调用的应该是同一个地方,除非是不按套路出牌,非要验证代码复制一份给启动时调用。虽然说这样做没什么问题,但是软件以后的维护就是个大问题了。所以我们还是进比较指令前面的CALL <mindmanager.sub_A4C640> 里看看有没有什么新发现。看到又调用了CALL <mindmanager.sub_6E4830>,后面还有个TEST EAX,EAX,比较可疑。改下返回值跑一下,OK通过了。接下来修改sub_6E4830,让它永久返回1,代码如下:
    | 55                    | PUSH EBP                     
    | 8BEC                  | MOV EBP,ESP                  
    | 68 60022601           | PUSH mindmanager.1260260      
    | 8B45 08               | MOV EAX,DWORD PTR SS:[EBP+0x8]
    | 50                    | PUSH EAX                     
    | E8 3FF8FFFF           | CALL <mindmanager.sub_6E4080>
    | 83C4 08               | ADD ESP,0x8                  
    | 5D                    | POP EBP                       
    | 40                    | INC EAX           <--------------------EAX本来是0,让它加1            
    | C3                    | RET                           
    经验证,这里返回1,上面的可以不用改jmp指令。


    评分

    参与人数 3威望 +7 飘云币 +12 收起 理由
    Rooking + 5 + 10 PYG有你更精彩!再接再厉
    飞天 + 1 + 1 PYG有你更精彩!
    阳光宅男 + 1 + 1 感谢发布原创作品,PYG有你更精彩!

    查看全部评分

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 977 天

    [LV.10]以坛为家III

    发表于 2019-10-1 20:00:58 | 显示全部楼层
    表哥大气,直接上代码!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 941 天

    [LV.10]以坛为家III

    发表于 2019-10-2 08:49:43 | 显示全部楼层
    感谢分享分析的过程,谢谢。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:00
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2019-10-2 19:43:20 | 显示全部楼层
    感谢大神分享,新手好好学习一下。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2 小时前
  • 签到天数: 317 天

    [LV.8]以坛为家I

    发表于 2019-10-6 08:15:23 | 显示全部楼层
    不错,顶一下。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入论坛

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

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