- UID
- 159
注册时间2005-2-13
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
楼主 |
发表于 2005-2-15 15:19:37
|
显示全部楼层
00431780 8B45 C>mov eax,dword ptr ss:[ebp-40]
00431783 83C4 1>add esp,14
00431786 66:3B4>cmp ax,word ptr ss:[ebp-4C] ; 最早"ONLocPlus"的长度
0043178A 7D 0D jge short locplus-.00431799
0043178C 66:40 inc ax ; 计数器
0043178E 0F80 3>jo locplus-.004319D3
00431794 8945 C>mov dword ptr ss:[ebp-40],eax
00431797 EB 07 jmp short locplus-.004317A0
00431799 C745 C>mov dword ptr ss:[ebp-40],1
004317A0 0FBF4D>movsx ecx,word ptr ss:[ebp-40]
004317A4 8B15 5>mov edx,dword ptr ds:[439158] ; 地址01a7514,unicode "ONLocPlus"
004317AA 8D45 9>lea eax,dword ptr ss:[ebp-68]
004317AD 50 push eax
004317AE 51 push ecx ; ecx=1,2,3等,类推,
004317AF 52 push edx
004317B0 C745 A>mov dword ptr ss:[ebp-60],1
004317B7 8975 9>mov dword ptr ss:[ebp-68],esi ; esi=2
004317BA FF15 4>call dword ptr ds:[<&MSVBVM50.rtcMidCharBstr>>; 取"ONLocPlus”取ecx位值,循环
004317C0 8BD0 mov edx,eax
004317C2 8D4D A>lea ecx,dword ptr ss:[ebp-54]
004317C5 FF15 1>call dword ptr ds:[<&MSVBVM50.__vbaStrMove>] ; 地址放入ebp-54,0012f8dc
004317CB 50 push eax
004317CC FF15 6>call dword ptr ds:[<&MSVBVM50.rtcAnsiValueBst>; 分别转ascii,如"O"转换成HEX值,eax=0x4F
004317D2 33C7 xor eax,edi ;假码与取的值异或
004317D4 8D95 4>lea edx,dword ptr ss:[ebp-B8]
004317DA 8D4D C>lea ecx,dword ptr ss:[ebp-3C] ; 地址12f8f4
004317DD 66:898>mov word ptr ss:[ebp-B0],ax ; ax=异或后的值, 放入[ebp-b0]
004317E4 89B5 4>mov dword ptr ss:[ebp-B8],esi
004317EA FF15 1>call dword ptr ds:[<&MSVBVM50.__vbaVarMove>] ; MSVBVM50.__vbaVarMove
004317F0 8D4D A>lea ecx,dword ptr ss:[ebp-54]
004317F3 FF15 5>call dword ptr ds:[<&MSVBVM50.__vbaFreeStr>] ; MSVBVM50.__vbaFreeStr
004317F9 8D4D 9>lea ecx,dword ptr ss:[ebp-68]
004317FC FF15 2>call dword ptr ds:[<&MSVBVM50.__vbaFreeVar>] ; MSVBVM50.__vbaFreeVar
00431802 8D45 C>lea eax,dword ptr ss:[ebp-3C]
00431805 8D8D 5>lea ecx,dword ptr ss:[ebp-A8]
0043180B 50 push eax
0043180C 51 push ecx
0043180D 66:899>mov word ptr ss:[ebp-A0],bx ; bx=假码的第1位开始取值,每次2个
00431814 C785 5>mov dword ptr ss:[ebp-A8],8002
0043181E FF15 B>call dword ptr ds:[<&MSVBVM50.__vbaVarTstLe>] ; 比较是否ax<=bx
00431824 66:85C>test ax,ax ; 小于eax=0,否=FFFF
00431827 74 5A je short locplus-.00431883 ;小于跳,不小于不跳
00431829 8D95 5>lea edx,dword ptr ss:[ebp-A8]
0043182F 8D45 C>lea eax,dword ptr ss:[ebp-3C]
00431832 52 push edx
00431833 8D4D 9>lea ecx,dword ptr ss:[ebp-68]
00431836 50 push eax
00431837 51 push ecx
00431838 C785 6>mov dword ptr ss:[ebp-A0],0FF ; 赋值,0x0ff
00431842 89B5 5>mov dword ptr ss:[ebp-A8],esi
00431848 66:899>mov word ptr ss:[ebp-B0],bx
0043184F 89B5 4>mov dword ptr ss:[ebp-B8],esi
00431855 FF15 D>call dword ptr ds:[<&MSVBVM50.__vbaVarAdd>] ; MSVBVM50.__vbaVarAdd
0043185B 50 push eax
0043185C 8D95 4>lea edx,dword ptr ss:[ebp-B8]
00431862 8D45 8>lea eax,dword ptr ss:[ebp-78]
00431865 52 push edx
00431866 50 push eax
00431867 FF15 0>call dword ptr ds:[<&MSVBVM50.__vbaVarSub>] ; MSVBVM50.__vbaVarSub
0043186D 8BD0 mov edx,eax
0043186F 8D4D C>lea ecx,dword ptr ss:[ebp-3C]
00431872 FF15 1>call dword ptr ds:[<&MSVBVM50.__vbaVarMove>] ; MSVBVM50.__vbaVarMove
00431878 8D4D 9>lea ecx,dword ptr ss:[ebp-68]
0043187B FF15 2>call dword ptr ds:[<&MSVBVM50.__vbaFreeVar>] ; MSVBVM50.__vbaFreeVar
00431881 EB 2D jmp short locplus-.004318B0 ; 以上为不小于的话,ax+0xff-bx
00431883 8D4D C>lea ecx,dword ptr ss:[ebp-3C] ; 由431827跳来,
00431886 8D95 5>lea edx,dword ptr ss:[ebp-A8]
0043188C 51 push ecx
0043188D 8D45 9>lea eax,dword ptr ss:[ebp-68]
00431890 52 push edx
00431891 50 push eax
00431892 66:899>mov word ptr ss:[ebp-A0],bx
00431899 89B5 5>mov dword ptr ss:[ebp-A8],esi ; esi=0x2
0043189F FF15 0>call dword ptr ds:[<&MSVBVM50.__vbaVarSub>] ; MSVBVM50.__vbaVarSub
004318A5 8BD0 mov edx,eax ;小于则 bx-ax
004318A7 8D4D C>lea ecx,dword ptr ss:[ebp-3C]
004318AA FF15 1>call dword ptr ds:[<&MSVBVM50.__vbaVarMove>] ; MSVBVM50.__vbaVarMove
004318B0 8B4D B>mov ecx,dword ptr ss:[ebp-48]
004318B3 8D55 C>lea edx,dword ptr ss:[ebp-3C]
004318B6 52 push edx
004318B7 898D 6>mov dword ptr ss:[ebp-A0],ecx
004318BD C785 5>mov dword ptr ss:[ebp-A8],8
004318C7 FF15 C>call dword ptr ds:[<&MSVBVM50.__vbaI4Var>] ; MSVBVM50.__vbaI4Var
004318CD 50 push eax
004318CE 8D45 9>lea eax,dword ptr ss:[ebp-68]
004318D1 50 push eax
004318D2 FF15 2>call dword ptr ds:[<&MSVBVM50.rtcVarBstrFromA>; MSVBVM50.rtcVarBstrFromAnsi
004318D8 8D8D 5>lea ecx,dword ptr ss:[ebp-A8]
004318DE 8D55 9>lea edx,dword ptr ss:[ebp-68]
004318E1 51 push ecx
004318E2 8D45 8>lea eax,dword ptr ss:[ebp-78]
004318E5 52 push edx
004318E6 50 push eax
004318E7 FF15 D>call dword ptr ds:[<&MSVBVM50.__vbaVarAdd>] ; 此处需仔细研究
004318ED 50 push eax
004318EE FF15 3>call dword ptr ds:[<&MSVBVM50.__vbaStrVarMove>; MSVBVM50.__vbaStrVarMove
004318F4 8BD0 mov edx,eax
004318F6 8D4D B>lea ecx,dword ptr ss:[ebp-48] ; 得出数值放入ebp-48,最后连在一起需得000000000099,才正确
004318F9 FF15 1>call dword ptr ds:[<&MSVBVM50.__vbaStrMove>]
004318FF 8D4D 8>lea ecx,dword ptr ss:[ebp-78]
00431902 8D55 9>lea edx,dword ptr ss:[ebp-68]
00431905 51 push ecx
00431906 52 push edx
00431907 56 push esi
00431908 FF15 4>call dword ptr ds:[<&MSVBVM50.__vbaFreeVarLis>; MSVBVM50.__vbaFreeVarList
0043190E 83C4 0>add esp,0C
00431911 8D85 1>lea eax,dword ptr ss:[ebp-E8]
00431917 8D8D 2>lea ecx,dword ptr ss:[ebp-D8]
0043191D 8D55 D>lea edx,dword ptr ss:[ebp-24]
00431920 50 push eax
00431921 51 push ecx
00431922 52 push edx
00431923 8BDF mov ebx,edi
00431925 FF15 4>call dword ptr ds:[<&MSVBVM50.__vbaVarForNext>; 为下一循环作准备
0043192B 33FF xor edi,edi
0043192D ^ E9 9DF>jmp locplus-.004316CF
00431932 8B55 B>mov edx,dword ptr ss:[ebp-48]
00431935 8D4D D>lea ecx,dword ptr ss:[ebp-2C]
00431938 FF15 9>call dword ptr ds:[<&MSVBVM50.__vbaStrCopy>] ; MSVBVM50.__vbaStrCopy
0043193E 9B wait
0043193F 68 BD1>push locplus-.004319BD
00431944 EB 44 jmp short locplus-.0043198A
00431946 F645 F>test byte ptr ss:[ebp-4],4
0043194A 74 09 je short locplus-.00431955
0043194C 8D4D D>lea ecx,dword ptr ss:[ebp-2C]
0043194F FF15 5>call dword ptr ds:[<&MSVBVM50.__vbaFreeStr>] ; MSVBVM50.__vbaFreeStr
00431955 8D45 A>lea eax,dword ptr ss:[ebp-58]
00431958 8D4D A>lea ecx,dword ptr ss:[ebp-54]
0043195B 50 push eax
0043195C 51 push ecx
0043195D 6A 02 push 2
0043195F FF15 A>call dword ptr ds:[<&MSVBVM50.__vbaFreeStrLis>; MSVBVM50.__vbaFreeStrList
00431965 83C4 0>add esp,0C
00431968 8D95 6>lea edx,dword ptr ss:[ebp-98]
0043196E 8D85 7>lea eax,dword ptr ss:[ebp-88]
00431974 8D4D 8>lea ecx,dword ptr ss:[ebp-78]
00431977 52 push edx
00431978 50 push eax
00431979 8D55 9>lea edx,dword ptr ss:[ebp-68]
0043197C 51 push ecx
0043197D 52 push edx
0043197E 6A 04 push 4
00431980 FF15 4>call dword ptr ds:[<&MSVBVM50.__vbaFreeVarLis>; MSVBVM50.__vbaFreeVarList
00431986 83C4 1>add esp,14
00431989 C3 retn
0043198A 8D85 1>lea eax,dword ptr ss:[ebp-E8]
00431990 8D8D 2>lea ecx,dword ptr ss:[ebp-D8]
00431996 50 push eax
00431997 51 push ecx
00431998 6A 02 push 2
0043199A FF15 4>call dword ptr ds:[<&MSVBVM50.__vbaFreeVarLis>; MSVBVM50.__vbaFreeVarList
004319A0 8B35 2>mov esi,dword ptr ds:[<&MSVBVM50.__vbaFreeVar>; MSVBVM50.__vbaFreeVar
004319A6 83C4 0>add esp,0C
004319A9 8D4D D>lea ecx,dword ptr ss:[ebp-24]
004319AC FFD6 call esi
004319AE 8D4D C>lea ecx,dword ptr ss:[ebp-3C]
004319B1 FFD6 call esi
004319B3 8D4D B>lea ecx,dword ptr ss:[ebp-48]
004319B6 - FF25 5>jmp dword ptr ds:[<&MSVBVM50.__vbaFreeStr>] ; MSVBVM50.__vbaFreeStr
004319BC C3 retn
004319BD 8B4D E>mov ecx,dword ptr ss:[ebp-14]
004319C0 8B45 D>mov eax,dword ptr ss:[ebp-2C]
004319C3 5F pop edi
004319C4 5E pop esi
004319C5 64:890>mov dword ptr fs:[0],ecx
004319CC 5B pop ebx
004319CD 8BE5 mov esp,ebp
004319CF 5D pop ebp
004319D0 C2 040>retn 4 ; 跳回 00431a86
--------------------------------------------------------------------------------
后记:
1.05于2003年3月推出,增加了专用的对照文件编辑器、工具“偏移量转换器”、“文本编码查询”和“剪贴板繁简转换”,给用户提供了很大的便利条件。但至今本人未见该软件的注册机面世,不知是各位高手不屑一破,还是说其在算法上有一定的难度。因为要试用其全部功能,于是便尝试着分析了一下,本注册机向下兼容,也适合以前版本。
二零零五年元月二十三日
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|