最初由 zlgooo 发布
楼主对奇迹英语的50个单词限制有何新法?从那入手?跟了一圈没找到头绪
提示一下:
对数据库的操作下断:
call [eax+40]、 call [ebx+40]、 call [ecx+40]、 call [edx+40]、 call [edi+40]、 call [esi+40]等,对这些代码进行下断,就可查到用的select语句。
在3.0中用的是select top 50 来限制的。
5.0试用版中:
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]