TA的每日心情 | 衰 2017-12-9 12:47 |
---|
签到天数: 47 天 [LV.5]常住居民I
|
07年的时候做过一次,不过后来程序没留。
昨天,朋友拿来让弄一下。于是顺便留下这么一篇文字。
=======================
速达的程序都是没有壳也没有压缩的,所以直接用OD载入,
第一步就是要找到加密狗提示的地方,搜索ASCII文字。找到加密锁提示的那段。
00416491 |. E8 4ACC0700 CALL sdcwpros.004930E0
00416496 84C0 TEST AL,AL //这里的判断是有没有狗,没有,那么AL的值是0。则跳出提示。那么查找狗判断狗的那段就是上面的CALL
00416498 74 62 JE SHORT sdcwpros.004164FC
0041649A |. E8 11EFFFFF CALL sdcwpros.004153B0
0041649F |. 84C0 TEST AL,AL
004164A1 |. 75 08 JNZ SHORT sdcwpros.004164AB
004164A3 |. E8 B8CF0700 CALL sdcwpros.00493460
004164A8 |. 48 DEC EAX
004164A9 |. 74 11 JE SHORT sdcwpros.004164BC
004164AB |> E8 00EFFFFF CALL sdcwpros.004153B0
……
004164F7 |. /E9 FF000000 JMP sdcwpros.004165FB
004164FC |> |6A 10 PUSH 10
004164FE |. |68 11F85C00 PUSH sdcwpros.005CF811 ; 错误
00416503 |. |66:C745 D8 08>MOV WORD PTR SS:[EBP-28],8
00416509 |. |8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0041650C |. |E8 3BBEFEFF CALL sdcwpros.0040234C
00416511 |. |50 PUSH EAX
00416512 |. |FF45 E4 INC DWORD PTR SS:[EBP-1C]
00416515 |. |8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00416518 |. |E8 2FBEFEFF CALL sdcwpros.0040234C
0041651D |. |50 PUSH EAX ; /Arg1
0041651E |. |FF45 E4 INC DWORD PTR SS:[EBP-1C] ; |
00416521 |. |E8 36F4FFFF CALL sdcwpros.0041595C ; \sdcwpros.0041595C
00416526 |. |59 POP ECX
00416527 |. |8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0041652A |. |B8 1AF75C00 MOV EAX,sdcwpros.005CF71A ; 《
0041652F |. |59 POP ECX
00416530 |. |E8 9F621400 CALL sdcwpros.0055C7D4
00416535 |. |8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
00416538 |. |52 PUSH EDX
00416539 |. |8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0041653C |. |E8 0BBEFEFF CALL sdcwpros.0040234C
00416541 |. |50 PUSH EAX
00416542 |. |FF45 E4 INC DWORD PTR SS:[EBP-1C]
00416545 |. |BA 1DF75C00 MOV EDX,sdcwpros.005CF71D ; 》未检测到加密锁,可能是以下原因引起的,请您确认:\n\n\n\n 1、是否已在usb接口上插入加密锁,如果已插,建议您更换usb接口再试一次;\n\n 2、您的加密锁需要升级,需有偿更换新的加密锁,请与我们联系(020-87384088);\n\n 3、请检查您购买的软件是否是正版软件!
0041654A |. |8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0041654D |. |E8 CE591400 CALL sdcwpros.0055BF20
00416552 |. |FF45 E4 INC DWORD PTR SS:[EBP-1C]
00416555 |. |8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
=========================
调试的时候进入那个CALL中。
00493335 |. /75 04 JNZ SHORT sdcwpros.0049333B
00493337 |33C0 XOR EAX,EAX //没有狗最终会走到这一步,这个地方,NOP掉它或者test eax,eax,,,这样在上面判断al的时候,al的值就不是0了。
00493339 |. |EB 05 JMP SHORT sdcwpros.00493340
0049333B |> \B8 01000000 MOV EAX,1
00493340 |> 50 PUSH EAX
00493341 |. FF4D EC DEC DWORD PTR SS:[EBP-14]
00493344 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00493347 |. BA 02000000 MOV EDX,2
0049334C |. E8 F78D0C00 CALL sdcwpros.0055C148
====================================
再继续运行下去出现注册提示,如我的上篇SD7K单机版的一样,通过查找ASCII文字:注册失败可以进行操作。
==============================
那么接下来就是根据关于这一步来查看一下用户数与试用版的情况。
而这个与SD7K不同的是,关于的窗口方式,在ASCII中找不到:用户数这种相关的文字,那么可以根据窗口上相关的文字,比如:BUILD:这样的字符串。
找到后,到过程头部设断点,跟踪它,
在这个过程中,有四个常量:
00493454 /$ 55 PUSH EBP
00493455 |. 8BEC MOV EBP,ESP
00493457 A1 34F65E00 MOV EAX,DWORD PTR DS:[5EF634]
0049345C 5D POP EBP
0049345D \. C3 RETN
0049345E 90 NOP
0049345F 90 NOP
00493460 /$ 55 PUSH EBP
00493461 |. 8BEC MOV EBP,ESP
00493463 A1 30F65E00 MOV EAX,DWORD PTR DS:[5EF630] ; (初始 cpu 选择)
00493468 |. 5D POP EBP
00493469 \. C3 RETN
上面的这两个变量就是我们要找的那个了,一个是表示试用版的情况,一个是表示用户数的情况。
这个地方,全改成1就可以了。
而在这个关于窗口代码中,有两个试用版的显示,这个呢,就是关于窗口中有个图片上面的试用版显示与否的地方,与实际运行是不相关的,但是显示总不是很漂亮,于是,在这里:
00411EF6 |. BA 02000000 MOV EDX,2 ; |
00411EFB |. E8 48A21400 CALL sdcwpros.0055C148 ; \sdcwpros.0055C148
00411F00 |. 59 POP ECX
00411F01 84C9 TEST CL,CL
00411F03 74 4F JE SHORT sdcwpros.00411F54
00411F05 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00411F08 |. 8B80 38030000 MOV EAX,DWORD PTR DS:[EAX+338]
00411F0E |. B2 01 MOV DL,1
00411F10 |. E8 C9311B00 CALL <[email=JMP.&vcl60.@Controls@TControl@SetV]JMP.&vcl60.@Controls@TControl@SetV[/email]>
00411F15 |. 66:C785 6CFFF>MOV WORD PTR SS:[EBP-94],50
00411F1E |. BA B2D75C00 MOV EDX,sdcwpros.005CD7B2 ; 试用版
00411F23 |. 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
00411F26 |. E8 F59F1400 CALL sdcwpros.0055BF20
00411F2B |. FF85 78FFFFFF INC DWORD PTR SS:[EBP-88]
00411F31 |. 8B10 MOV EDX,DWORD PTR DS:[EAX]
00411F33 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
在这里,需要的是CL为0才行,这样就不显示那个试用版的三个大红字。那么我们直接xor cl,cl这样,下面的JE结果就是正确的。
==================
上面的几个地方,在执行文件中patch掉。
============================================
结果如图显示。
做完之后,就可以测试客户端的情况,
如前面SD7K中所说的那样,速达对于试用版的限制就在于:财务模块的月结次数限制。这个你们可以通过直接运行试用版而知道。本程序通过月结测试了。 |
评分
-
查看全部评分
|