本来没打算写这个,后来整理老硬盘的时候,发现以前保留的一个ASProtect的脱壳工具,就试了一下,现在网上有ASProtect unpacker 1.7版的下载。
用它脱后的文件,可以修复代码变形和校验。比较好。
然后用OD载入的时候,可以直接搜寻ascii码,比较方便破解比较。
然后看了上个贴子,有人说最新版,于是我DOWN了个试用版来看看。
原本看有SDERPService.exe和SDERPServer.exe两个,以为跟3.6的差不多,结果跟踪的时候发现,大不一样了,包括加密狗对比、用户数对比等。
在用户数对比的常量中,发现除了赋1外没有其它直接赋值,也就是说它试用版里,是不进行其它用户数处理的,只做了1在里面。
然后又发现,加密狗对比不使用常量了,那么跟踪起来就麻烦了,在SDERPServer.exe中发现,是否正式版、是否注册、用户数等信息,跟3G3.6的版本一样,通过服务的形式来的,于是看了一下,SDERPServer.exe从SDERPService.exe中获取的数据格式,突然发现一个很好玩的东西,:在SDERPService.exe中
004075AB . BA 68067200 MOV EDX,_Y_SDERP.00720668 ; \nistrial=
004075B0 . 8D85 E4FDFFFF LEA EAX,DWORD PTR SS:[EBP-21C]
004075B6 . E8 E11F2B00 CALL _Y_SDERP.006B959C
004075BB . FF85 84FBFFFF INC DWORD PTR SS:[EBP-47C]
004075C1 . 8D95 E4FDFFFF LEA EDX,DWORD PTR SS:[EBP-21C]
。。。。。。。。。。。。。。。。。。。。。。。。省略
004075F5 . E8 CA500400 CALL _Y_SDERP.0044C6C4
004075FA . 84C0 TEST AL,AL
004075FC . 74 21 JE SHORT _Y_SDERP.0040761F
004075FE . C685 F7FAFFFF 01 MOV BYTE PTR SS:[EBP-509],1
00407605 . BA 72067200 MOV EDX,_Y_SDERP.00720672 ; t
0040760A . 8D85 DCFDFFFF LEA EAX,DWORD PTR SS:[EBP-224]
00407610 . E8 871F2B00 CALL _Y_SDERP.006B959C
00407615 . 8BD0 MOV EDX,EAX
00407617 . FF85 84FBFFFF INC DWORD PTR SS:[EBP-47C]
0040761D . EB 1F JMP SHORT _Y_SDERP.0040763E
0040761F > C685 F6FAFFFF 01 MOV BYTE PTR SS:[EBP-50A],1
00407626 . BA 74067200 MOV EDX,_Y_SDERP.00720674 ; f
=========================
0040ACF2 |. BA FD097200 MOV EDX,_Y_SDERP.007209FD ; isregistered=
0040ACF7 |. 8D85 F4FEFFFF LEA EAX,DWORD PTR SS:[EBP-10C]
...........省略
0040AD2E |. 803D F1598200 00 CMP BYTE PTR DS:[8259F1],0
0040AD35 |. 74 07 JE SHORT _Y_SDERP.0040AD3E
0040AD37 |. BA 0B0A7200 MOV EDX,_Y_SDERP.00720A0B ; t
0040AD3C |. EB 05 JMP SHORT _Y_SDERP.0040AD43
0040AD3E |> BA 0D0A7200 MOV EDX,_Y_SDERP.00720A0D ; f
==========================
这个在SDERPServer.exe中也存在相似的,也就是读取的。
那么这里的判断,两个红标的。是给服务器界面程序传送的结果判断。是T还是F,真还是假。
那么,,istrial(istrialversion)和 isregistered(hadregiste、registermsg、registed等)的值决定各客户端、服务界面等程序是试用还是正式,是注册还是未注册的关键,(没仔细研究这些单词相关的是哪个方面的结果,我是都给改了。)
在这里,istrial之类的值 应该是F ,,也就是说,试用版=false,不是试用,结果就是正式版。
isregistered的值 应该是T,就是说注册=true,注册过了。
所以,通过ascii字符串里搜trail、regist这两个单词,找到类似的带有“=”号的,进去,把跳转变更就可以了,
然后发现,居然可以有,结果就显示成正式版 了,客户端可以进去,结账可以进行。已经完成了从试用版到正式版的转变了。
不过问题又来了,它默认只有1个用户,而且这个支持的1个用户与通过“关于”菜单里看到的用户数不是同一个数字。那么怎么办呢?
看下面:
0040657F . 80B9 85000000 00 CMP BYTE PTR DS:[ECX+85],0
00406586 . 75 49 JNZ SHORT _Y_SDERP.004065D1
00406588 . 66:C785 78FBFFFF B402 MOV WORD PTR SS:[EBP-488],2B4
00406591 . BA 61057200 MOV EDX,_Y_SDERP.00720561 ; 已超出用户连接数限制,连接被拒绝!
00406596 . 8D85 A4FEFFFF LEA EAX,DWORD PTR SS:[EBP-15C]
0040659C . E8 FB2F2B00 CALL _Y_SDERP.006B959C
(好的吧,,这个我很无语,我想,这样的话,要不是因为试用版有很多功能不让用,我都想直接改客户端文件,强制进行一些操作了。)
这里,我连两个客户端的时候,它在第2号客户端中提示的是红字标出的“已超出用户连接数限制,连接被拒绝!”那么,我跳过,判断进接进行下去。(话说,这算QJ么?)
结果就好了,
上图,今天就不上附件了,有兴趣自己整,
图注:我只改了Service文件,而界面上显示的,支持用户数只有1,而软件锁用户就有2个了,也就是说,改了上面的用户对比代码后,超过支持数的,自动认为是带狗的。。好吧,真弱。
使用的工具有:
1.ASProtect unpacker 1.7
2.OD
3.UE
|