Nisy 发表于 2015-8-8 02:03:03

ActiveSMART v2.9.7.144 简单分析

HomePage: http://www.ariolic.com/

误打误撞错下了该软件,快下班的时候简单分析了一下,不遂人愿,居然是双进程,紫禁城还有壳 ...



虽然难度不大,还是发帖子整理下,权当好久没写文章了,灌水冒个泡。OD 带参来搞紫禁城:



不会脱壳,带壳操,运行软件后,输入错误的注册码后,bp MessageBoxW :



<a href="tel:<a href="tel:00407862">00407862</a>">00407862</a>|.51            PUSH    ECX                              ;Name
<a href="tel:<a href="tel:00407863">00407863</a>">00407863</a>|.50            PUSH    EAX                              ;Key
<a href="tel:<a href="tel:00407864">00407864</a>">00407864</a>|.E8 0B8F1700   CALL    ASmartCo.00580774
<a href="tel:<a href="tel:00407869">00407869</a>">00407869</a>|.85C0          TEST    EAX, EAX
0040786B|.74 73         JE      SHORT ASmartCo.004078E0          ;跳向失败
... ...

004078E0|> \8B55 D8       MOV   EDX, DWORD PTR SS:
004078E3|.6A 00         PUSH    0                              ; /Style = MB_OK|MB_APPLMODAL
004078E5|.<a href="tel:<a href="tel:68 40875900">68 40875900</a>">68 40875900</a>   PUSH    ASmartCo.00598740                ; |Active SMART
004078EA|.52            PUSH    EDX                              ; |Text = "Wrong registration information. Please check it and try again."
004078EB|.6A 00         PUSH    0                              ; |hOwner = NULL
004078ED|.FF15 E4785900 CALL    NEAR DWORD PTR DS:       ; \MessageBoxW
004078F3|>8B85 7CFCFFFF MOV   EAX, DWORD PTR SS:




跟进CALL看下:


<a href="tel:<a href="tel:00580762">00580762</a>">00580762</a>   $- FF25 38795900 JMP   NEAR DWORD PTR DS:       ;version.VerQueryValueW
<a href="tel:<a href="tel:00580768">00580768</a>">00580768</a>   $- FF25 34795900 JMP   NEAR DWORD PTR DS:       ;version.GetFileVersionInfoW
0058076E   $- FF25 30795900 JMP   NEAR DWORD PTR DS:       ;version.GetFileVersionInfoSizeW
<a href="tel:<a href="tel:00580774">00580774</a>">00580774</a>   $- FF25 64705900 JMP   NEAR DWORD PTR DS:       ;弹窗验证是否成功
0058077A   $- FF25 60705900 JMP   NEAR DWORD PTR DS:
<a href="tel:<a href="tel:00580780">00580780</a>">00580780</a>   $- FF25 68705900 JMP   NEAR DWORD PTR DS:



提示重启验证 ...在这里下硬件断点 : 00580774 , 无果, 于是只能靠猜 ...对这里 0058077A,00580780 下硬件断点 。


重启后中断了,中断在这里:程序有四处调用:
00580780   $- FF25 68705900 JMP   NEAR DWORD PTR DS:

DS:=0037CF20
本地调用来自 004081BC, 0040C4F2, 0040E5CC, 004354D1


一处是启动时弹窗,一处是验证是否成功修改标题,一处是点HELP下拉菜单,一处是显示关于。(这些不是猜的啦,是调试看到的 ... )

我们就先来看下验证成功修改标题这里:


0040E5CC|.E8 AF211700   CALL    ASmartCo.00580780
0040E5D1|.8B07          MOV   EAX, DWORD PTR DS:
0040E5D3|.85C0          TEST    EAX, EAX
0040E5D5|.0F84 81000000 JE      ASmartCo.0040E65C             // 首先这里不能跳
0040E5DB|.B9 CC7E5900   MOV   ECX, ASmartCo.00597ECC
0040E5E0|>8A10          /MOV   DL, BYTE PTR DS:         // 若不跳则 EAX = 0 必异常
0040E5E2|.3A11          |CMP   DL, BYTE PTR DS:
0040E5E4|.75 1A         |JNZ   SHORT ASmartCo.0040E600
0040E5E6|.84D2          |TEST    DL, DL
0040E5E8|.74 12         |JE      SHORT ASmartCo.0040E5FC
0040E5EA|.8A50 01       |MOV   DL, BYTE PTR DS:
0040E5ED|.3A51 01       |CMP   DL, BYTE PTR DS:
0040E5F0|.75 0E         |JNZ   SHORT ASmartCo.0040E600
0040E5F2|.83C0 02       |ADD   EAX, 2
0040E5F5|.83C1 02       |ADD   ECX, 2
0040E5F8|.84D2          |TEST    DL, DL
0040E5FA|.^ 75 E4         \JNZ   SHORT ASmartCo.0040E5E0
0040E5FC|>33C0          XOR   EAX, EAX
0040E5FE|.EB 05         JMP   SHORT ASmartCo.0040E605
0040E600|>1BC0          SBB   EAX, EAX
0040E602|.83D8 FF       SBB   EAX, -1
0040E605|>85C0          TEST    EAX, EAX
0040E607|.74 53         JE      SHORT ASmartCo.0040E65C
0040E609|.6A 00         PUSH    0
0040E60B|.<a href="tel:<a href="tel:68 20050000">68 20050000</a>">68 20050000</a>   PUSH    520
0040E610|.8BCE          MOV   ECX, ESI
0040E612|.E8 3A140600   CALL    ASmartCo.0046FA51
0040E617|.8BC8          MOV   ECX, EAX
0040E619|.E8 8F160600   CALL    ASmartCo.0046FCAD
0040E61E|.6A 00         PUSH    0
0040E620|.8D8E F8780000 LEA   ECX, DWORD PTR DS:
0040E626|.E8 82160600   CALL    ASmartCo.0046FCAD
0040E62B|.6A 00         PUSH    0
0040E62D|.68 1D050000   PUSH    51D
0040E632|.8BCE          MOV   ECX, ESI
0040E634|.E8 18140600   CALL    ASmartCo.0046FA51
0040E639|.8BC8          MOV   ECX, EAX
0040E63B|.E8 6D160600   CALL    ASmartCo.0046FCAD
0040E640|.6A 00         PUSH    0
0040E642|.68 1E050000   PUSH    51E
0040E647|.8BCE          MOV   ECX, ESI
0040E649|.E8 <a href="tel:<a href="tel:03140600">03140600</a>">03140600</a>   CALL    ASmartCo.0046FA51
0040E64E|.8BC8          MOV   ECX, EAX
0040E650|.E8 58160600   CALL    ASmartCo.0046FCAD
0040E655|.6A 00         PUSH    0
0040E657|.E9 D8000000   JMP   ASmartCo.0040E734
0040E65C|>8B45 B0       MOV   EAX, DWORD PTR SS:    ;这里就是显示那个 trial version 的标题了
0040E65F|.8B8D 10FFFFFF MOV   ECX, DWORD PTR SS:
0040E665|.50            PUSH    EAX
0040E666|.51            PUSH    ECX
0040E667|.8D95 20FFFFFF LEA   EDX, DWORD PTR SS:
0040E66D|.68 309E5900   PUSH    ASmartCo.00599E30                ;%s - [ %s ]
0040E672|.52            PUSH    EDX
0040E673|.E8 E858FFFF   CALL    ASmartCo.00403F60
0040E678|.8B9D 20FFFFFF MOV   EBX, DWORD PTR SS:       ;ASmartCo.005F85A0
0040E67E|.83C4 10       ADD   ESP, 10
0040E681|.53            PUSH    EBX                              ;ASmartCo.005F85A0
0040E682|.8BCE          MOV   ECX, ESI
0040E684|.E8 59150600   CALL    ASmartCo.0046FBE2
0040E689|.8D85 0CFFFFFF LEA   EAX, DWORD PTR SS:
0040E68F|.50            PUSH    EAX
0040E690|.8D8D F4FEFFFF LEA   ECX, DWORD PTR SS:
0040E696|.51            PUSH    ECX
0040E697|.6A 01         PUSH    1
0040E699|.E8 DC201700   CALL    ASmartCo.0058077A
0040E69E|.8B85 0CFFFFFF MOV   EAX, DWORD PTR SS:       ;USER32.75386D91
0040E6A4|.8986 FC220000 MOV   DWORD PTR DS:, EAX
0040E6AA|.85C0          TEST    EAX, EAX
0040E6AC|.74 20         JE      SHORT ASmartCo.0040E6CE
0040E6AE|.8B8E 70240000 MOV   ECX, DWORD PTR DS:
0040E6B4|.50            PUSH    EAX
0040E6B5|.51            PUSH    ECX
0040E6B6|.8D95 20FFFFFF LEA   EDX, DWORD PTR SS:
0040E6BC|.52            PUSH    EDX
0040E6BD|.E8 9E58FFFF   CALL    ASmartCo.00403F60
0040E6C2|.8B9D 20FFFFFF MOV   EBX, DWORD PTR SS:       ;ASmartCo.005F85A0
0040E6C8|.83C4 0C       ADD   ESP, 0C
0040E6CB|.53            PUSH    EBX                              ;ASmartCo.005F85A0
0040E6CC|.EB 05         JMP   SHORT ASmartCo.0040E6D3
0040E6CE|><a href="tel:<a href="tel:68 20955900">68 20955900</a>">68 20955900</a>   PUSH    ASmartCo.00599520                ;You are running evaluating ActiveSMART. Register to remove limitations.




综上所述,修改方案为: 0040E5D781==>2E请仔细体会 。。。

我们发现,这四处关键点类似(特征码 ...):

0040E5FC|> \33C0          XOR   EAX, EAX                         ;这里EAX不能清零
0040E5FE|.EB 05         JMP   SHORT ASmartCo.0040E605
0040E600|>1BC0          SBB   EAX, EAX
0040E602|.83D8 FF       SBB   EAX, -1
0040E605|>85C0          TEST    EAX, EAX
0040E607|.74 53         JE      SHORT ASmartCo.0040E65C          ;这里不能跳


所以其他几处我们 33CO ==> B801

于是PATCH这四处,但是程序显示注册处为空,so ... 跟踪看下,Patch内存数据让其显示注册给 Nisy ...




但是大家发现这样貌似不妥,启动时就会报一个错误,why ... 因为我们把注册信息path进去,程序读取之后很不爽 ...

所以我们还得动个小聪明,这样就不报错了,有兴趣的朋友请去查看补丁自行收藏学习,多改一个字节即可。




最终成品 ~ (~﹃~)~zZ 去, 虽然玩OD会很累,也不是风华正茂的年纪了,但是我发现自己还是喜欢OD下自己感兴趣的软件,这个爱好自己还是可以收获快乐的。

轩轩1018 发表于 2015-8-8 10:35:02

大神出手,教材简单实用

0xcb 发表于 2015-8-8 10:41:18

应该将path => patch, 感谢分享方法,学习了

Nisy 发表于 2015-8-8 10:44:56

轩轩1018 发表于 2015-8-8 10:35
大神出手,教材简单实用

软件难度中等,看破文可能难以得其精妙,若有兴趣可以先调试后再来对照破文。

erui 发表于 2015-8-8 11:23:52

就像是破解对方设置好的一道道关卡,一旦全部通过,心情自然是很愉悦。这叫智慧的挑战。

Rooking 发表于 2015-8-8 11:27:58

我想知道的是这个带参调试的参数是怎么取得的{:soso_e154:}

Rooking 发表于 2015-8-8 12:06:16

跟踪的时候有看到过这个-O 但是不晓得那个就是参数 是不是需要下 双进程的断点

gujin162 发表于 2015-8-8 12:19:13


膜拜神贴,后面的请保持队形~

Nisy 发表于 2015-8-8 13:16:59

Rooking 发表于 2015-8-8 12:06
跟踪的时候有看到过这个-O 但是不晓得那个就是参数 是不是需要下 双进程的断点

OD 打开调试程序的时候输入从process explorer中获取的参数即可

Rooking 发表于 2015-8-8 14:01:08

Nisy 发表于 2015-8-8 13:16
OD 打开调试程序的时候输入从process explorer中获取的参数即可

我是跟到最后 跟到那里了 发现可以patch掉这个参数

页: [1] 2
查看完整版本: ActiveSMART v2.9.7.144 简单分析