能力值:
( LV2,RANK:10 )
2 楼
新人没人理啊~
能力值:
( LV9,RANK:180 )
3 楼
想跟踪什么呢?
两种方法:第一,是将50个单词的限制解除就可以了。
第二,查查算用户码的方法。我现在跟到用硬盘和BIOS信息来计算用户码,但还用了其它信息,这个信息我还没找到,找到的话,估计可以解决的。
这个luosoft001.exe只是个试用版,有些功能代码是没有的。但主要的问题是只要能解决50个限制的问题就能搞定的。因为词库是可以得到完整词库的。
正式版的主程序文件是那个11857K的DLL文件,将其改为.exe就可以运行了。但注册为正式版后,文件还有些转换过程。
有兴趣一块交流交流:具体讨论一下。
能力值:
( LV2,RANK:10 )
4 楼
谢谢楼上的大哥,终于有人理了,5555~~~
想跟踪到注册码,目前基本确认断点应该在这里:
014D0218 . 50 push eax ――这里下,把假注册码放入eax
014D0219 . 68 58865300 push 00538658
014D021E . FF15 20114000 call dword ptr [<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp ――我跟进的是这个Call
014D0224 . 8BF8 mov edi, eax
014D0226 . 8D4D E8 lea ecx, dword ptr [ebp-18]
014D0229 . F7DF neg edi
014D022B . 1BFF sbb edi, edi
014D022D . 47 inc edi
014D022E . F7DF neg edi
014D0230 . FF15 D0124000 call dword ptr [<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
014D0236 . 8D4D E4 lea ecx, dword ptr [ebp-1C]
014D0239 . FF15 CC124000 call dword ptr [<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
后面的不知道怎么做了,很糊涂……
能力值:
( LV2,RANK:10 )
5 楼
50个单词的限制怎么搞定,用啥函数?
能力值:
( LV2,RANK:10 )
6 楼
未经过“跳跳狗”的同意,转载了他的说明,一起研究哈:
在3.0时,这个限制是用 select top 50 来控制的。将这个修改为select * 就解决了。 但跟踪了5.0的试用版时,没有发现这个,估计是用其它的方式。
能力值:
( LV9,RANK:180 )
7 楼
提示一下:
用DREAMAN的VB程序过程下断。对每一步进行跟踪。比较第49个单词与50个单词的学习时流程的差异。看看能不能找到相应的差别
当然这个也不一定能行。在分析3.0时,就是先找到这个差异,将其中的跳转改了,结果运行出错。原是这个判断是是否为数据库EOF的确定,所以改了出没用。程序是先用select top 50,只调用了50个单词的。所以后来找到select top 50,一改OK了。
跟踪数据库操作的VB特征码是:
+40
即: call [eax+40]、 call [ebx+40]、 call [ecx+40]、 call [edx+40]、 call [edi+40]、 call [esi+40]等,对这些代码进行下断,就可查到用的select语句。
能力值:
( LV9,RANK:180 )
8 楼
0146A28F 50 push eax
0146A290 53 push ebx UNICODE "select count(*) as countZ1 from tbDanciQxieels where typeid1=1 and typeid2=244"
0146A291 FF52 40 call [edx+40] ; msado15.4DD48A67
0146A294 85C0 test eax, eax
0146A296 DBE2 fclex
tbDanciQxieels就是单词数据库
select count(*) as countZ1 from tbDanciQxieels where typeid1=1 and typeid2=244 的意思就是将244课程的单词数量给变量countZ1
试用版中词库的缩减的,最多只有50个。所以这个变量最大为50。
同时估计它是将countZ1进行断定,如果大于50,则赋值为50
可以先自己将词库改改,增加数据
然后再找找 那里有countZ1的限制。
0146A455 B9 E8875300 mov ecx, 005387E8 ; UNICODE "countZ1"
....
0146A499 FF15 D8104000 call [<&MSVBVM60.__vbaVarIndexLoad>] ; MSVBVM60.__vbaVarIndexLoad
0146A49F 83C4 1C add esp, 1C
0146A4A2 8D4D BC lea ecx, [ebp-44]
0146A4A5 50 push eax
0146A4A6 51 push ecx
0146A4A7 FF15 C8114000 call [<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal 'EAX: UNICODE "50"
0146A4AD 8BD3 mov edx, ebx
0146A4AF 8B9D 0CFEFFFF mov ebx, [ebp-1F4]
0146A4B5 50 push eax 'EAX: UNICODE "50" 会不会是这个限制?
0146A4B6 53 push ebx
0146A4B7 FF52 54 call [edx+54]
0146A4BA 85C0 test eax, eax
....
0146A4F8 FFD7 call edi
0146A4FA B9 FC875300 mov ecx, 005387FC ; UNICODE "countZ2"
....
0146A53D 50 push eax
0146A53E FF15 D8104000 call [<&MSVBVM60.__vbaVarIndexLoad>] ; MSVBVM60.__vbaVarIndexLoad
0146A544 83C4 1C add esp, 1C
0146A547 8D4D BC lea ecx, [ebp-44]
0146A54A 50 push eax
0146A54B 51 push ecx
0146A54C FF15 C8114000 call [<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal 'EAX: UNICODE "19407"
0146A552 8BD3 mov edx, ebx
0146A554 8B9D 0CFEFFFF mov ebx, [ebp-1F4]
0146A55A 50 push eax 'EAX: UNICODE "19407" 这个是单词总数限制
0146A55B 53 push ebx
0146A55C FF52 54 call [edx+54]
能力值:
( LV2,RANK:10 )
9 楼
晕~~
昨天下午分析了半天,在跟踪di寄存器时发现了“select 50”,回来不知道跑哪儿去了……
能力值:
( LV9,RANK:180 )
10 楼
有select 30,那是选择复习的单词用的,不是学习数量限制的。
只要跟踪+40,都能找到这些SELECT的
能力值:
( LV9,RANK:180 )
11 楼
刚才跟踪了一下:
0146A4A7 FF15 C8114000 call [<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal 'EAX: UNICODE "50"
0146A4AD 8BD3 mov edx, ebx
0146A4AF 8B9D 0CFEFFFF mov ebx, [ebp-1F4]
0146A4B5 50 push eax 'EAX: UNICODE "50" 会不会是这个限制?
不是50个限制 ,这个数就是这一课程的单词数。如果在单词库中增加了单词,这个数也会变的。
看到程序在其它地方有检测50这个数。只要能找到就成了。
能力值:
( LV2,RANK:10 )
12 楼
高手给个提示!太复杂了
能力值:
( LV2,RANK:10 )
13 楼
我用的是3.08,根据你们的提示:把select top 50改为select *可取消50个单词的限制,我在字符串中找到:
select top 50 * from tbdanciwediqwm where typeid1=
可改来改去怎么也没法,望你们赐教。
能力值:
( LV9,RANK:180 )
14 楼
最初由 zlgooo 发布 我用的是3.08,根据你们的提示:把select top 50改为select *可取消50个单词的限制,我在字符串中找到: select top 50 * from tbdanciwediqwm where typeid1= 可改来改去怎么也没法,望你们赐教。
这个是迷惑人的吧。它的top 50 是在内存中生成的。不能多字符串中找到。
再说3.08也没什么可分析的吧。不如分析5.0
能力值:
( LV2,RANK:10 )
15 楼
5.0太难了,又太大大了
能力值:
( LV2,RANK:10 )
16 楼
有select 30,那是选择复习的单词用的,不是学习数量限制的。
只要跟踪+40,都能找到这些SELECT的 [/QUOTE]
3.08中我也全部在+40]下断,按你的方法跟踪,可没有见到select top 50,不知怎么回事?
能力值:
( LV2,RANK:10 )
17 楼
最初由 跳跳狗 发布 有select 30,那是选择复习的单词用的,不是学习数量限制的。 只要跟踪+40,都能找到这些SELECT的
3.08中我也全部在+40]下断,按你的方法跟踪,可没有见到select top 50,不知怎么回事?[QUOTE]
能力值:
( LV9,RANK:180 )
18 楼
3.08我没分析过,会不会是和5.0一样,并不是用select top 50的方式了