《神经网络算彩票2.0破解》
下载地址:http://www.downreg.com/Software/View-Software-5338.html
神经网络算彩票2.0软件是用人工神经网络(A.N.N.)技术来分析彩票数据的软件,他的简介说他很好,
就是注册费要600块。
安装后运行,发现没注册只能运行一个任务,而且建模次数不能大于1.
现在来破它。
先加载我整理的几个词典,它可以使你更方便的了解VB:API和汇编指令。
输入注册码后,它要求重起,用filemon可知他写文件regcpa12.dll,打开一看,里面原来是我输入
的注册码。
下断点在__vbaFileOpen可得到:
004DCDBD call ds:__vbaFileOpen ; 读regcpa12.dll文件。
现在可慢慢分析它了。
分析结果大概如下:
1).注册码格式是:xxxxxxxx-yyyyyyy(必需有“-”).
2).它使用两个标志位,两个标志位同时通过才能成功。
3).[(机器码/3.313773+45891) - yyyyyyyy]<=1,第一个标志位通过。
4).(xxxxxxxx通过运算得到一个数)与(机器码通过运算得到一个数)相差不大于1,第二个标志位通过。
详细分析如下:假设我输入的注册码为:12345678R-99999999
1).通过下面代码可知输入注册码的长度。
.text:004DCE01 push edx ; *edx->"xxxxxxxx-yyyyyyyy"
.text:004DCE02 call ds:__vbaLenBstr;len("12345678R-99999999")
.text:004DCE08 mov ecx, eax
.text:004DCE0A call ds:__vbaI2I4
.text:004DCE10 mov [ebp-3Ch], ax
.text:004DCE14 mov dword ptr [ebp-4], 67h
.text:004DCE1B mov ax, [ebp-3Ch]
.text:004DCE1F mov [ebp-168h], ax
.text:004DCE26 mov word ptr [ebp-164h], 1
.text:004DCE2F mov word ptr [ebp-28h], 1
.text:004DCE35 jmp short loc_4DCE4C ;
.text:004DCE37 again_1: ; CODE XREF: .text:004DCFEFj
.text:004DCE37 mov cx, [ebp-28h]
.text:004DCE3B add cx, [ebp-164h]
.text:004DCE42 jo loc_4DD225
.text:004DCE48 mov [ebp-28h], cx
.text:004DCE4C
.text:004DCE4C loc_4DCE4C: ; CODE XREF: .text:004DCE35j
.text:004DCE4C mov dx, [ebp-28h] ; [ebp-28h]=1
.text:004DCE50 cmp dx, [ebp-168h] ; [ebp-168h]=len("12345678R-99999999")
.text:004DCE57 jg next_first ; 须大于1位
2).通过下面代码可知输入注册码的格式。
.text:004DCE96 call ds:rtcMidCharVar ; *eax->(1,2,3,4,5,6,7,8,R,-,9,9,9,9,9,9,9,9)
.text:004DCE9C lea edx, [ebp-74h]
.text:004DCE9F push edx
.text:004DCEA0 call ds:__vbaStrVarMove
.text:004DCEA6 mov edx, eax
.text:004DCEA8 lea ecx, [ebp-34h]
.text:004DCEAB call ds:__vbaStrMove
.text:004DCEB1 lea eax, [ebp-74h]
.text:004DCEB4 push eax
.text:004DCEB5 lea ecx, [ebp-64h]
.text:004DCEB8 push ecx
.text:004DCEB9 push 2
.text:004DCEBB call ds:__vbaFreeVarList
.text:004DCEC1 add esp, 0Ch
.text:004DCEC4 mov dword ptr [ebp-4], 69h
.text:004DCECB mov edx, [ebp-34h]
.text:004DCECE push edx
.text:004DCECF push 40C530h ; "-" 格式
.text:004DCED4 call ds:__vbaStrCmp
.text:004DCEDA test eax, eax
.text:004DCEDC jnz loc_4DCFE8 ;
.text:004DCEDC
3).分离出yyyyyyy
.text:004DCF33 call ds:rtcMidCharVar ; *eax->"99999999"
.text:004DCF39 lea ecx, [ebp-74h]
.text:004DCF3C push ecx
.text:004DCF3D lea edx, [ebp-50h]
.text:004DCF40 push edx
.text:004DCF41 call ds:__vbaStrVarVal
.text:004DCF47 push eax
.text:004DCF48 call ds:rtcR8ValFromBstr
.text:004DCF4E call ds:__vbaFpI4 ; st(0)=99999999
.text:004DCF54 mov dword_532310, eax ; eax=99999999,dword_532310=99999999
4).通过机器码计算出另外一个数并减去yyyyyyy并设为标志位1
.text:004DD100 mov eax, dword_532304 ; 应该是关于注册码
.text:004DD105 sub ecx, [eax+edx*4]
.text:004DD108 jo loc_4DD225
.text:004DD10E mov [ebp-23Ch], ecx ; ecx=机器码
.text:004DD114 fild dword ptr [ebp-23Ch]
.text:004DD11A cmp dword_532000, 0
.text:004DD121 jnz short loc_4DD12B ; XX
.text:004DD123 fdiv ds:dbl_4016B8;机器码/3.313773(ds:dbl_4016B8=3.313773)
.text:004DD129 jmp short loc_4DD13C
.text:004DD12B loc_4DD12B:
.text:004DD12B push dword ptr ds:dbl_4016B8+4 ; XX
.text:004DD131 push dword ptr ds:dbl_4016B8 ; XX
.text:004DD137 call _adj_fdiv_m64 ; XX
.text:004DD13C
.text:004DD13C loc_4DD13C:
.text:004DD13C fadd ds:dbl_4016B0;机器码/3.313773+45891(ds:dbl_4016B0=45891)
.text:004DD142 call ds:__vbaFpI4
.text:004DD148 mov dword_532314, eax
.text:004DD14D mov dword ptr [ebp-4], 73h
.text:004DD154 mov ecx, dword_532314 ;dword_532314=通过机器码计算出来的
.text:004DD15A sub ecx, dword_532310 ; dword_532310=99999999
.text:004DD160 jo loc_4DD225
.text:004DD166 call ds:__vbaI4Abs
.text:004DD16C mov dword_532318, eax ;dword_532318就是标志位1
5).使用标志位1的位置是:
.text:004E924A cmp dword_532318, 1;使用标志位1
.text:004E9251 jle loc_4E931C ;跳则成功(dword_532318=1或=0成功)
6).假设我们输入的注册码前半部份为:"12345678R"
把它分开写成:a9=9,a8=3,a7=3,a6=4,a5=5,a4=6,a3=7,a2=8,a1="R"
将这些字符转为数字,如遇字母则为0,存入备用地址。
.text:0050383D mov ecx, [ebp-1F8h]
.text:00503843 mov edx, [ebp-40h]
.text:00503846 mov eax, [edx+ecx*4]
.text:00503849 push eax ;
.text:0050384A call ds:rtcR8ValFromBstr;把注册码前半部份字符转为数字
.text:00503850 call ds:__vbaFpI2 ; eax=(0,8,7,6,5,4,3,2,1)
.text:00503856 mov ecx, [ebp+8]
.text:00503859 mov edx, [ecx+68h] ;
.text:0050385C mov ecx, [ebp-1F4h] ;
.text:00503862 mov [edx+ecx*2], ax ; 数字存入备用地址
.text:00503866 mov dword ptr [ebp-4], 29h
.text:0050386D jmp AGAIN_2 ;
备用地址的内容为:b1=0,b2=8,b3=7,b4=6,b5=5,b6=4,b7=3,b8=2,b9=1
7).用第1位a1="R"来搜索的字符串"HKRTW5MYFAZP";存入备用地址第1位(存)
.text:0050397E mov dword ptr [ebp-1F4h], 1 ; a1="R"第1位(读)
.text:00503988 cmp dword ptr [ebp-1F4h], 33h
.text:0050398F jnb short loc_50399D
.text:00503991 mov dword ptr [ebp-26Ch], 0
.text:0050399B jmp short NEXT_1_1 ; START
.text:0050399D loc_50399D: ; CODE XREF: .text:0050398Fj
.text:0050399D call ds:__vbaGenerateBoundsError
.text:005039A3 mov [ebp-26Ch], eax ;
.text:005039A3 ;
.text:005039A9
.text:005039A9 NEXT_1_1: ; CODE XREF: .text:0050399Bj
.text:005039A9 push 1 ; START
.text:005039AB mov eax, [ebp-58h]
.text:005039AE push eax ; *eax->接受搜索的字符串"HKRTW5MYFAZP"
.text:005039AF mov ecx, [ebp-1F4h]
.text:005039B5 mov edx, [ebp-40h]
.text:005039B8 mov eax, [edx+ecx*4]
.text:005039BB push eax ; *eax->被搜索的字符串"R"
.text:005039BC push 0
.text:005039BE call ds:__vbaInStr ;
.text:005039C4 mov ecx, eax ;eax=3
.text:005039C6 call ds:__vbaI2I4
.text:005039CC mov [ebp-54h], ax ; [ebp-54h]=3
.text:005039D0 mov dword ptr [ebp-4], 2Ch
.text:005039D7 mov cx, [ebp-54h]
.text:005039DB sub cx, 1 ;3-1
.text:005039DF jo loc_503E79
.text:005039E5 mov [ebp-54h], cx
.text:005039E9 mov dword ptr [ebp-4], 2Dh
.text:005039F0 mov dword ptr [ebp-1F4h], 1 ; 备用地址第1位(存)
.text:005039FA cmp dword ptr [ebp-1F4h], 33h
.text:00503A01 jnb short loc_503A0F
.text:00503A03 mov dword ptr [ebp-270h], 0
.text:00503A0D jmp short loc_503A1B
.text:00503A0F loc_503A0F: ; CODE XREF: .text:00503A01j
.text:00503A0F call ds:__vbaGenerateBoundsError
.text:00503A15 mov [ebp-270h], eax
.text:00503A1B
.text:00503A1B loc_503A1B: ; CODE XREF: .text:00503A0Dj
.text:00503A1B mov edx, [ebp+8]
.text:00503A1E mov eax, [edx+68h]
.text:00503A21 mov ecx, [ebp-1F4h]
.text:00503A27 mov dx, [ebp-54h]
.text:00503A2B mov [eax+ecx*2], dx ; [eax+ecx*2]=[ebp-54h]=2 存入备用地址第1位
备用地址的内容为:b1=2,b2=8,b3=7,b4=6,b5=5,b6=4,b7=3,b8=2,b9=1
8).用第1位a2="8"来搜索的字符串"HKRTW5MYFAZP";存入备用地址第4位
.text:00503A36 mov dword ptr [ebp-1F4h], 2 ; a2="8"第2位(读)
.text:00503A40 cmp dword ptr [ebp-1F4h], 33h
.text:00503A47 jnb short loc_503A55
.text:00503A49 mov dword ptr [ebp-274h], 0
.text:00503A53 jmp short loc_503A61
.text:00503A55 loc_503A55:
.text:00503A55 call ds:__vbaGenerateBoundsError
.text:00503A5B mov [ebp-274h], eax ;
.text:00503A61
.text:00503A61 loc_503A61:
.text:00503A61 push 1
.text:00503A63 mov eax, [ebp-58h]
.text:00503A66 push eax ; *eax->接受搜索的字符串"HKRTW5MYFAZP"
.text:00503A67 mov ecx, [ebp-1F4h]
.text:00503A6D mov edx, [ebp-40h]
.text:00503A70 mov eax, [edx+ecx*4]
.text:00503A73 push eax ; a2="8"
.text:00503A74 push 0
.text:00503A76 call ds:__vbaInStr
.text:00503A7C mov ecx, eax ;搜不到,则 eax=0
.text:00503A7E call ds:__vbaI2I4
.text:00503A84 mov [ebp-5Ch], ax ; [ebp-5Ch]=0
.text:00503A88 mov dword ptr [ebp-4], 2Fh
.text:00503A8F mov cx, [ebp-5Ch]
.text:00503A93 sub cx, 1 ;cx=0-1=ffffh
.text:00503A97 jo loc_503E79
.text:00503A9D mov [ebp-5Ch], cx
.text:00503AA1 mov dword ptr [ebp-4], 30h
.text:00503AA8 mov dword ptr [ebp-1F4h], 4 ; 备用地址第4位(存)
.text:00503AB2 cmp dword ptr [ebp-1F4h], 33h
.text:00503AB9 jnb short loc_503AC7
.text:00503ABB mov dword ptr [ebp-278h], 0
.text:00503AC5 jmp short loc_503AD3
.text:00503AC7 loc_503AC7: ; CODE XREF: .text:00503AB9j
.text:00503AC7 call ds:__vbaGenerateBoundsError
.text:00503ACD mov [ebp-278h], eax
.text:00503AD3
.text:00503AD3 loc_503AD3: ; CODE XREF: .text:00503AC5j
.text:00503AD3 mov edx, [ebp+8]
.text:00503AD6 mov eax, [edx+68h]
.text:00503AD9 mov ecx, [ebp-1F4h]
.text:00503ADF mov dx, [ebp-5Ch]
.text:00503AE3 mov [eax+ecx*2], dx ; [eax+ecx*2]=[ebp-5Ch]=ffff 存入备用地址第4位
.text:00503AE7 mov dword ptr [ebp-4], 31h
备用地址的内容为:b1=2,b2=8,b3=7,b4=ffff,b5=5,b6=4,b7=3,b8=2,b9=1
9).用第1位a4="6"来搜索的字符串"HKRTW5MYFAZP";存入备用地址第6位
.text:00503AEE mov dword ptr [ebp-1F4h], 4 ;a4="6"第4位(读)
.text:00503AF8 cmp dword ptr [ebp-1F4h], 33h
.text:00503AFF jnb short loc_503B0D
.text:00503B01 mov dword ptr [ebp-27Ch], 0
.text:00503B0B jmp short loc_503B19
.text:00503B0D loc_503B0D:
.text:00503B0D call ds:__vbaGenerateBoundsError
.text:00503B13 mov [ebp-27Ch], eax ;
.text:00503B19
.text:00503B19 loc_503B19:
.text:00503B19 push 1
.text:00503B1B mov eax, [ebp-58h]
.text:00503B1E push eax ;*eax->接受搜索的字符串"HKRTW5MYFAZP"
.text:00503B1F mov ecx, [ebp-1F4h]
.text:00503B25 mov edx, [ebp-40h]
.text:00503B28 mov eax, [edx+ecx*4]
.text:00503B2B push eax ; a4="6"
.text:00503B2C push 0
.text:00503B2E call ds:__vbaInStr
.text:00503B34 mov ecx, eax ;搜不到,则 eax=0
.text:00503B36 call ds:__vbaI2I4
.text:00503B3C mov ecx, [ebp+8]
.text:00503B3F mov [ecx+74h], ax ; [ecx+74h]=0
.text:00503B43 mov dword ptr [ebp-4], 32h
.text:00503B4A mov edx, [ebp+8]
.text:00503B4D mov ax, [edx+74h]
.text:00503B51 sub ax, 2 ;ax=0-2=fffe
.text:00503B55 jo loc_503E79
.text:00503B5B mov ecx, [ebp+8]
.text:00503B5E mov [ecx+74h], ax
.text:00503B62 mov dword ptr [ebp-4], 33h
.text:00503B69 mov dword ptr [ebp-1F4h], 6 ; 备用地址第6位
.text:00503B73 cmp dword ptr [ebp-1F4h], 33h
.text:00503B7A jnb short loc_503B88
.text:00503B7C mov dword ptr [ebp-280h], 0
.text:00503B86 jmp short loc_503B94
.text:00503B88 loc_503B88:
.text:00503B88 call ds:__vbaGenerateBoundsError
.text:00503B8E mov [ebp-280h], eax
.text:00503B94
.text:00503B94 loc_503B94:
.text:00503B94 mov edx, [ebp+8]
.text:00503B97 mov eax, [edx+68h]
.text:00503B9A mov ecx, [ebp-1F4h]
.text:00503BA0 mov edx, [ebp+8]
.text:00503BA3 mov dx, [edx+74h]
.text:00503BA7 mov [eax+ecx*2], dx ; [eax+ecx*2]=[edx+74h]=fffe 存入备用地址第6位
.text:00503BAB mov dword ptr [ebp-4], 34h
备用地址的内容为:b1=2,b2=8,b3=7,b4=ffff,b5=5,b6=fffe,b7=3,b8=2,b9=1
10).用第6位a6="4"来搜索的字符串"HKRTW5MYFAZP";存入备用地址第2位.
.text:00503BAB mov dword ptr [ebp-4], 34h
.text:00503BB2 mov dword ptr [ebp-1F4h], 6 ; ;a6="4"第6位(读)
.text:00503BBC cmp dword ptr [ebp-1F4h], 33h
.text:00503BC3 jnb short loc_503BD1
.text:00503BC5 mov dword ptr [ebp-284h], 0
.text:00503BCF jmp short loc_503BDD
.text:00503BD1 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00503BD1
.text:00503BD1 loc_503BD1: ; CODE XREF: .text:00503BC3j
.text:00503BD1 call ds:__vbaGenerateBoundsError
.text:00503BD7 mov [ebp-284h], eax ;
.text:00503BD7 ;
.text:00503BD7 ;
.text:00503BDD
.text:00503BDD loc_503BDD: ; CODE XREF: .text:00503BCFj
.text:00503BDD push 1
.text:00503BDF mov eax, [ebp-58h]
.text:00503BE2 push eax ;*eax->接受搜索的字符串"HKRTW5MYFAZP"
.text:00503BE3 mov ecx, [ebp-1F4h]
.text:00503BE9 mov edx, [ebp-40h]
.text:00503BEC mov eax, [edx+ecx*4]
.text:00503BEF push eax ; a6="4"
.text:00503BF0 push 0
.text:00503BF2 call ds:__vbaInStr
.text:00503BF8 mov ecx, eax ;搜不到,则 eax=0
.text:00503BFA call ds:__vbaI2I4
.text:00503C00 mov [ebp-7Ch], ax ; [ebp-7Ch]=0
.text:00503C04 mov dword ptr [ebp-4], 35h
.text:00503C0B mov cx, [ebp-7Ch]
.text:00503C0F sub cx, 1 ;cx=0-1=ffff
.text:00503C13 jo loc_503E79
.text:00503C19 mov [ebp-7Ch], cx
.text:00503C1D mov dword ptr [ebp-4], 36h
.text:00503C24 mov dword ptr [ebp-1F4h], 2; 备用地址第2位
.text:00503C2E cmp dword ptr [ebp-1F4h], 33h
.text:00503C35 jnb short loc_503C43
.text:00503C37 mov dword ptr [ebp-288h], 0
.text:00503C41 jmp short loc_503C4F
.text:00503C43 loc_503C43:
.text:00503C43 call ds:__vbaGenerateBoundsError
.text:00503C49 mov [ebp-288h], eax
.text:00503C4F
.text:00503C4F loc_503C4F:
.text:00503C4F mov edx, [ebp+8]
.text:00503C52 mov eax, [edx+68h]
.text:00503C55 mov ecx, [ebp-1F4h]
.text:00503C5B mov dx, [ebp-7Ch]
.text:00503C5F mov [eax+ecx*2], dx ; [eax+ecx*2]=[ebp-7Ch]=ffff 存入备用地址第2位
备用地址的内容为:b1=2,b2=ffff,b3=7,b4=ffff,b5=5,b6=fffe,b7=3,b8=2,b9=1
11),把备用地址的内容平方后相加,设为标志位2,地址为[ecx+74h]
.text:00503C96 AGAIN_33: ; CODE XREF: .text:00503D5Ej
.text:00503C96 mov dx, [ebp-24h] ; [ebp-24h]=1(初始化)
.text:00503C9A add dx, [ebp-220h] ; [ebp-220h]=1
.text:00503CA1 jo loc_503E79
.text:00503CA7 mov [ebp-24h], dx ; dx=dx+1
.text:00503CAB
.text:00503CAB loc_503CAB: ; CODE XREF: .text:00503C94j
.text:00503CAB mov ax, [ebp-24h]
.text:00503CAF cmp ax, [ebp-224h] ; [ebp-224h]=9
.text:00503CB6 jg exit
.text:00503CBC mov dword ptr [ebp-4], 39h
.text:00503CC3 movsx ecx, word ptr [ebp-24h]
.text:00503CC7 mov [ebp-1F4h], ecx
.text:00503CCD cmp dword ptr [ebp-1F4h], 33h
.text:00503CD4 jnb short loc_503CE2
.text:00503CD6 mov dword ptr [ebp-28Ch], 0
.text:00503CE0 jmp short JMP_OK
.text:00503CE2 loc_503CE2: ; CODE XREF: .text:00503CD4j
.text:00503CE2 call ds:__vbaGenerateBoundsError
.text:00503CE8 mov [ebp-28Ch], eax
.text:00503CEE
.text:00503CEE JMP_OK: ; CODE XREF: .text:00503CE0j
.text:00503CEE movsx edx, word ptr [ebp-24h]
.text:00503CF2 mov [ebp-1F8h], edx
.text:00503CF8 cmp dword ptr [ebp-1F8h], 33h
.text:00503CFF jnb short loc_503D0D
.text:00503D01 mov dword ptr [ebp-290h], 0
.text:00503D0B jmp short JMP_OK2 ; ##
.text:00503D0D loc_503D0D: ; CODE XREF: .text:00503CFFj
.text:00503D0D call ds:__vbaGenerateBoundsError
.text:00503D13 mov [ebp-290h], eax
.text:00503D19
.text:00503D19 JMP_OK2: ; CODE XREF: .text:00503D0Bj
.text:00503D19 mov eax, [ebp+8] ; ##
.text:00503D1C mov ecx, [eax+68h] ; ##
.text:00503D1F mov edx, [ebp+8] ; ##
.text:00503D22 mov eax, [edx+68h] ; ##
.text:00503D25 mov edx, [ebp-1F4h] ; ##
.text:00503D2B mov esi, [ebp-1F8h] ; ##
.text:00503D31 mov cx, [ecx+edx*2] ; ##
.text:00503D35 imul cx, [eax+esi*2] ; 备用地址内容平方相加
.text:00503D3A jo loc_503E79
.text:00503D40 mov edx, [ebp+8]
.text:00503D43 mov ax, [edx+74h]
.text:00503D47 add ax, cx
.text:00503D4A jo loc_503E79
.text:00503D50 mov ecx, [ebp+8]
.text:00503D53 mov [ecx+74h], ax ;[ecx+74h]为标志位2.
.text:00503D57 mov dword ptr [ebp-4], 3Ah
.text:00503D5E jmp AGAIN_33 ;
.text:00503D5E
12).标志位2的使用
.text:004EB92D mov dx, [ebp-140h]
.text:004EB934 sub dx, [ecx+74h] ; [ecx+74h]为标志位2.标志位2与dx相差不大于1则成功。
.text:004EB938 jo loc_4FFAC2
.text:004EB93E mov ecx, edx
.text:004EB940 call ds:__vbaI2Abs ;绝对值
.text:004EB946 cmp ax, 1
.text:004EB94A jle loc_4EBA20 ;跳则成功
但dx从哪来的呢?它是从机器码算出来的。
13).把机器码分离开并转为ASCII并乘以1.37 存入备用地址.
.text:004E9DD4 mov edx, [ebp-24h]
.text:004E9DD7 push edx
.text:004E9DD8 lea eax, [ebp-1DCh]
.text:004E9DDE push eax ;eax->每一位机器码
.text:004E9DDF lea ecx, [ebp-17Ch]
.text:004E9DE5 push ecx
.text:004E9DE6 call ds:rtcMidCharVar
.text:004E9DEC mov edx, [ebp-24h]
.text:004E9DEF mov [ebp-264h], edx
.text:004E9DF5 cmp dword ptr [ebp-264h], 33h
.text:004E9DFC jnb short loc_4E9E0A
.text:004E9DFE mov dword ptr [ebp-648h], 0
.text:004E9E08 jmp short loc_4E9E16
.text:004E9E0A loc_4E9E0A: ; CODE XREF: .text:004E9DFCj
.text:004E9E0A call ds:__vbaGenerateBoundsError
.text:004E9E10 mov [ebp-648h], eax
.text:004E9E16
.text:004E9E16 loc_4E9E16: ; CODE XREF: .text:004E9E08j
.text:004E9E16 lea eax, [ebp-17Ch]
.text:004E9E1C push eax
.text:004E9E1D lea ecx, [ebp-154h]
.text:004E9E23 push ecx
.text:004E9E24 call ds:__vbaStrVarVal
.text:004E9E2A push eax
.text:004E9E2B call ds:rtcAnsiValueBstr ; 每一位机器码转为ASCII
.text:004E9E31 movsx edx, ax
.text:004E9E34 mov [ebp-64Ch], edx
.text:004E9E3A fild dword ptr [ebp-64Ch]
.text:004E9E40 fmul ds:dbl_402630;乘以1.37 ds:dbl_402630=1.37
.text:004E9E46 call ds:__vbaFpI2
.text:004E9E4C mov ecx, [ebp-264h]
.text:004E9E52 mov edx, [ebp-0ECh]
.text:004E9E58 mov [edx+ecx*2], ax ; 存入备用地址
.text:004E9E5C lea ecx, [ebp-154h]
.text:004E9E62 call ds:__vbaFreeStr
.text:004E9E68 lea eax, [ebp-17Ch]
.text:004E9E6E push eax
.text:004E9E6F lea ecx, [ebp-16Ch]
.text:004E9E75 push ecx
.text:004E9E76 push 2
.text:004E9E78 call ds:__vbaFreeVarList
.text:004E9E7E add esp, 0Ch
.text:004E9E81 mov dword ptr [ebp-4], 42h
.text:004E9E88 jmp loc_4E9D7B
存入备用地址内容为:47h,42h,49h,4dh,4eh,49h,45h,42h,42h
14)它还故意对第3位加1
.text:004E9E8D mov dword ptr [ebp-4], 43h
.text:004E9E94 mov dword ptr [ebp-268h], 3;第3位
.text:004E9E9E cmp dword ptr [ebp-268h], 33h
.text:004E9EA5 jnb short loc_4E9EB3
.text:004E9EA7 mov dword ptr [ebp-650h], 0
.text:004E9EB1 jmp short loc_4E9EBF
.text:004E9EB3 loc_4E9EB3:
.text:004E9EB3 call ds:__vbaGenerateBoundsError
.text:004E9EB9 mov [ebp-650h], eax
.text:004E9EBF
.text:004E9EBF loc_4E9EBF:
.text:004E9EBF mov dword ptr [ebp-264h], 3;第3位
.text:004E9EC9 cmp dword ptr [ebp-264h], 33h
.text:004E9ED0 jnb short loc_4E9EDE
.text:004E9ED2 mov dword ptr [ebp-654h], 0
.text:004E9EDC jmp short loc_4E9EEA
.text:004E9EDE loc_4E9EDE:
.text:004E9EDE call ds:__vbaGenerateBoundsError
.text:004E9EE4 mov [ebp-654h], eax
.text:004E9EEA
.text:004E9EEA loc_4E9EEA:
.text:004E9EEA mov edx, [ebp-268h]
.text:004E9EF0 mov eax, [ebp-0ECh]
.text:004E9EF6 mov cx, [eax+edx*2] ; 读第3位
.text:004E9EFA add cx, 1 ;第3位加1
.text:004E9EFE jo loc_4FFAC2
.text:004E9F04 mov edx, [ebp-264h]
.text:004E9F0A mov eax, [ebp-0ECh]
.text:004E9F10 mov [eax+edx*2], cx;存第3位
.text:004E9F14 mov dword ptr [ebp-4], 44h
.text:004E9F1B movsx ecx, word ptr [ebp-60h]
存入备用地址内容变为为:47h,42h,4ah,4dh,4eh,49h,45h,42h,42h
15)对存入备用地址内容取10进制个位数
ok_again: ; CODE XREF: .text:004EA06Dj
.text:004E9F38 mov edx, [ebp-24h]
.text:004E9F3B add edx, [ebp-31Ch]
.text:004E9F41 jo loc_4FFAC2
.text:004E9F47 mov [ebp-24h], edx
.text:004E9F4A loc_4E9F4A:
.text:004E9F4A mov eax, [ebp-24h]
.text:004E9F4D cmp eax, [ebp-320h]
.text:004E9F53 jg loc_4EA072
.text:004E9F59 mov dword ptr [ebp-4], 45h
.text:004E9F60 mov ecx, [ebp-24h]
.text:004E9F63 mov [ebp-268h], ecx
.text:004E9F69 cmp dword ptr [ebp-268h], 33h
.text:004E9F70 jnb short loc_4E9F7E
.text:004E9F72 mov dword ptr [ebp-658h], 0
.text:004E9F7C jmp short loc_4E9F8A
.text:004E9F7E loc_4E9F7E:
.text:004E9F7E call ds:__vbaGenerateBoundsError
.text:004E9F84 mov [ebp-658h], eax
.text:004E9F8A
.text:004E9F8A loc_4E9F8A:
.text:004E9F8A mov edx, [ebp-24h]
.text:004E9F8D mov [ebp-26Ch], edx
.text:004E9F93 cmp dword ptr [ebp-26Ch], 33h
.text:004E9F9A jnb short loc_4E9FA8
.text:004E9F9C mov dword ptr [ebp-65Ch], 0
.text:004E9FA6 jmp short loc_4E9FB4
.text:004E9FA8 loc_4E9FA8:
.text:004E9FA8 call ds:__vbaGenerateBoundsError
.text:004E9FAE mov [ebp-65Ch], eax
.text:004E9FB4
.text:004E9FB4 loc_4E9FB4:
.text:004E9FB4 mov eax, [ebp-24h]
.text:004E9FB7 mov [ebp-264h], eax
.text:004E9FBD cmp dword ptr [ebp-264h], 33h
.text:004E9FC4 jnb short loc_4E9FD2
.text:004E9FC6 mov dword ptr [ebp-660h], 0
.text:004E9FD0 jmp short loc_4E9FDE
.text:004E9FD2 loc_4E9FD2:
.text:004E9FD2 call ds:__vbaGenerateBoundsError
.text:004E9FD8 mov [ebp-660h], eax
.text:004E9FDE
.text:004E9FDE loc_4E9FDE:
.text:004E9FDE mov ecx, [ebp-268h]
.text:004E9FE4 mov edx, [ebp-0ECh]
.text:004E9FEA movsx eax, word ptr [edx+ecx*2] ; 取备用地址内容
.text:004E9FEE mov [ebp-664h], eax
.text:004E9FF4 fild dword ptr [ebp-664h]
.text:004E9FFA fstp qword ptr [ebp-66Ch]
.text:004EA000 mov ecx, [ebp-26Ch]
.text:004EA006 mov edx, [ebp-0ECh]
.text:004EA00C movsx eax, word ptr [edx+ecx*2]
.text:004EA010 mov [ebp-670h], eax
.text:004EA016 fild dword ptr [ebp-670h]
.text:004EA01C cmp dword_532000, 0
.text:004EA023 jnz short loc_4EA02D ; XX
.text:004EA025 fdiv ds:dbl_402628 ; 除以10
.text:004EA02B jmp short loc_4EA03E ;
.text:004EA02D loc_4EA02D:
.text:004EA02D push dword ptr ds:dbl_402628+4 ; XX
.text:004EA033 push dword ptr ds:dbl_402628 ; XX
.text:004EA039 call _adj_fdiv_m64 ; XX
.text:004EA03E
.text:004EA03E loc_4EA03E:
.text:004EA03E call ds:__vbaFPInt ; st(0)取整
.text:004EA044 fmul ds:dbl_402628 ;乘以10,即取10进制个位数
.text:004EA04A fsubr qword ptr [ebp-66Ch] ;
.text:004EA050 call ds:__vbaFpI2
.text:004EA056 mov ecx, [ebp-264h]
.text:004EA05C mov edx, [ebp-0ECh]
.text:004EA062 mov [edx+ecx*2], ax ; 存入备用地址
.text:004EA066 mov dword ptr [ebp-4], 46h
.text:004EA06D jmp ok_again ;
存入备用地址内容为:1,6,4,7,8,3,9,6,6
16).
.text:004EB85D loc_4EB85D: ; CODE XREF: .text:004EB91Ej
.text:004EB85D mov ecx, [ebp-24h]
.text:004EB860 add ecx, [ebp-334h]
.text:004EB866 jo loc_4FFAC2
.text:004EB86C mov [ebp-24h], ecx
.text:004EB86F
.text:004EB86F loc_4EB86F: ; CODE XREF: .text:004EB85Bj
.text:004EB86F mov edx, [ebp-24h]
.text:004EB872 cmp edx, [ebp-338h]
.text:004EB878 jg loc_4EB923
.text:004EB87E mov dword ptr [ebp-4], 80h
.text:004EB885 mov eax, [ebp-24h]
.text:004EB888 mov [ebp-264h], eax
.text:004EB88E cmp dword ptr [ebp-264h], 33h
.text:004EB895 jnb short loc_4EB8A3
.text:004EB897 mov dword ptr [ebp-764h], 0
.text:004EB8A1 jmp short loc_4EB8AF
.text:004EB8A3 loc_4EB8A3: ; CODE XREF: .text:004EB895j
.text:004EB8A3 call ds:__vbaGenerateBoundsError
.text:004EB8A9 mov [ebp-764h], eax
.text:004EB8AF
.text:004EB8AF loc_4EB8AF: ; CODE XREF: .text:004EB8A1j
.text:004EB8AF mov ecx, [ebp-24h]
.text:004EB8B2 mov [ebp-268h], ecx
.text:004EB8B8 cmp dword ptr [ebp-268h], 33h
.text:004EB8BF jnb short loc_4EB8CD
.text:004EB8C1 mov dword ptr [ebp-768h], 0
.text:004EB8CB jmp short loc_4EB8D9
.text:004EB8CD loc_4EB8CD: ; CODE XREF: .text:004EB8BFj
.text:004EB8CD call ds:__vbaGenerateBoundsError
.text:004EB8D3 mov [ebp-768h], eax
.text:004EB8D9
.text:004EB8D9 loc_4EB8D9: ; CODE XREF: .text:004EB8CBj
.text:004EB8D9 mov edx, [ebp-264h]
.text:004EB8DF mov eax, [ebp-0ECh]
.text:004EB8E5 mov ecx, [ebp-268h]
.text:004EB8EB mov esi, [ebp-0ECh]
.text:004EB8F1 mov dx, [eax+edx*2]
.text:004EB8F5 imul dx, [esi+ecx*2] ;备用地址内容平方
.text:004EB8FA jo loc_4FFAC2
.text:004EB900 mov ax, [ebp-140h]
.text:004EB907 add ax, dx
.text:004EB90A jo loc_4FFAC2
.text:004EB910 mov [ebp-140h], ax;备用地址内容平方相加,这就是(12)所说的dx了
.text:004EB917 mov dword ptr [ebp-4], 81h
.text:004EB91E jmp loc_4EB85D ;
.text:004EB91E
.text:004EB923 loc_4EB923: ; CODE XREF: .text:004EB878j
.text:004EB923 mov dword ptr [ebp-4], 82h
.text:004EB92A mov ecx, [ebp+8]
.text:004EB92D mov dx, [ebp-140h];这就是(12)所说的dx了
.text:004EB934 sub dx, [ecx+74h] ;
.text:004EB938 jo loc_4FFAC2
.text:004EB93E mov ecx, edx
.text:004EB940 call ds:__vbaI2Abs
.text:004EB946 cmp ax, 1
.text:004EB94A jle loc_4EBA20;;跳则成功
17).到此就完了,我的机器码为:405895200,算出来的注册码为:199K9K9KK-122533218,后半部份是固定的,前半部份有多种情况.
18).注册机:...
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)