IE助理师(IEstar) V2.0算法分析

时间:2005-12-20 来源: 作者: 点击:
分析如下: 004A1B5C . 03000000 DD 00000003 004A1B60 . 7A 68 75 00 ASCII "zhu",0 004A1B64 . 53 PUSH EBX 004A1B65 . 8BD8 MOV EBX,EAX 004A1B67 . 8BC3 MOV EAX,EBX 004A1B69 . E8 32DDFFFF CALL IEstar.0049F8A0===>关键CALL,按F7进入。 004A1B6E . 84C0 TES
  分析如下:

004A1B5C   . 03000000       DD 00000003
004A1B60   . 7A 68 75 00    ASCII "zhu",0
004A1B64   . 53             PUSH EBX
004A1B65   . 8BD8           MOV EBX,EAX
004A1B67   . 8BC3           MOV EAX,EBX
004A1B69   . E8 32DDFFFF    CALL IEstar.0049F8A0===>关键CALL,按F7进入。
004A1B6E   . 84C0           TEST AL,AL
004A1B70   . 74 09          JE SHORT IEstar.004A1B7B===>跳到出错处。
004A1B72   . 8BC3           MOV EAX,EBX
004A1B74   . E8 97DAFFFF    CALL IEstar.0049F610
004A1B79   . 5B             POP EBX
004A1B7A   . C3             RETN
004A1B7B   > B8 901B4A00    MOV EAX,IEstar.004A1B90===>出错处。
004A1B80   . E8 33F5FAFF    CALL IEstar.004510B8
004A1B85   . 5B             POP EBX
004A1B86   . C3             RETN

 

进入CALL IEstar.0049F8A0后来到:


0049F8A0  /$ 55             PUSH EBP
0049F8A1  |. 8BEC           MOV EBP,ESP
0049F8A3  |. 33C9           XOR ECX,ECX
0049F8A5  |. 51             PUSH ECX
0049F8A6  |. 51             PUSH ECX
0049F8A7  |. 51             PUSH ECX
0049F8A8  |. 51             PUSH ECX
0049F8A9  |. 51             PUSH ECX
0049F8AA  |. 53             PUSH EBX
0049F8AB  |. 56             PUSH ESI
0049F8AC  |. 8945 FC        MOV DWORD PTR SS:[EBP-4],EAX
0049F8AF  |. 33C0           XOR EAX,EAX
0049F8B1  |. 55             PUSH EBP
0049F8B2  |. 68 7CF94900    PUSH IEstar.0049F97C
0049F8B7  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
0049F8BA  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
0049F8BD  |. 33C0           XOR EAX,EAX
0049F8BF  |. 8945 F4        MOV DWORD PTR SS:[EBP-C],EAX
0049F8C2  |. 8D55 F8        LEA EDX,DWORD PTR SS:[EBP-8]
0049F8C5  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0049F8C8  |. 8B80 EC040000  MOV EAX,DWORD PTR DS:[EAX+4EC]
0049F8CE  |. E8 A9D7F8FF    CALL IEstar.0042D07C===>计算注册名长度的CALL。
0049F8D3  |. 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8]===>将注册名移入EAX。
0049F8D6  |. E8 C544F6FF    CALL IEstar.00403DA0
0049F8DB  |. 8BD8           MOV EBX,EAX===>将注册名长度移入EBX。
0049F8DD  |. 85DB           TEST EBX,EBX===>测试注册名长度。
0049F8DF  |. 7E 2E          JLE SHORT IEstar.0049F90F===>注册名长度如小于等于0则跳,跳则死。
0049F8E1  |. BE 01000000    MOV ESI,1
0049F8E6  |> 8D45 F0        /LEA EAX,DWORD PTR SS:[EBP-10]
0049F8E9  |. 50             |PUSH EAX
0049F8EA  |. B9 01000000    |MOV ECX,1
0049F8EF  |. 8BD6           |MOV EDX,ESI
0049F8F1  |. 8B45 F8        |MOV EAX,DWORD PTR SS:[EBP-8]===>将注册名移入EAX。
0049F8F4  |. E8 AF46F6FF    |CALL IEstar.00403FA8
0049F8F9  |. 8B45 F0        |MOV EAX,DWORD PTR SS:[EBP-10]
0049F8FC  |. E8 6346F6FF    |CALL IEstar.00403F64
0049F901  |. 8A00           |MOV AL,BYTE PTR DS:[EAX]===>在循环中将注册名字符的十六进制ASCII码依次移入AL。
0049F903  |. 25 FF000000    |AND EAX,0FF
0049F908  |. 0145 F4        |ADD DWORD PTR SS:[EBP-C],EAX===>在循环中,将注册名字符的十六进制ASCII码依次相加后的值存入[EBP-C]中。
0049F90B  |. 46             |INC ESI
0049F90C  |. 4B             |DEC EBX===>注册名长度每循环一次即自减1,用以判断是否继续循环。
0049F90D  |.^75 D7          \JNZ SHORT IEstar.0049F8E6===>EBX不为0则继续循环。
0049F90F  |> 8D55 EC        LEA EDX,DWORD PTR SS:[EBP-14]
0049F912  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0049F915  |. 8B80 F0040000  MOV EAX,DWORD PTR DS:[EAX+4F0]
0049F91B  |. E8 5CD7F8FF    CALL IEstar.0042D07C
0049F920  |. 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]===>将输入的假注册码移入EAX。
0049F923  |. E8 F88EF6FF    CALL IEstar.00408820===>将输入的假注册码换算成十六进制,然后移入EAX。
0049F928  |. 8B55 F4        MOV EDX,DWORD PTR SS:[EBP-C]===>将注册名字符十六进制ASCII码依次相加后的值移                                入EDX。
0049F92B  |. 81C2 FB7E1200  ADD EDX,127EFB===>EDX=EDX+127EFB
0049F931  |. 81C2 B91B5400  ADD EDX,IEstar.00541BB9===>EDX=EDX+541BB9
0049F937  |. 3BC2           CMP EAX,EDX===>比较
0049F939  |. 75 19          JNZ SHORT IEstar.0049F954===>不等则跳,跳则死。
0049F93B  |. B3 01          MOV BL,1
0049F93D  |. B8 D49B4A00    MOV EAX,IEstar.004A9BD4
0049F942  |. 8B55 F8        MOV EDX,DWORD PTR SS:[EBP-8]
0049F945  |. E8 2A42F6FF    CALL IEstar.00403B74
0049F94A  |. 8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]
0049F94D  |. A3 D89B4A00    MOV DWORD PTR DS:[4A9BD8],EAX
0049F952  |. EB 02          JMP SHORT IEstar.0049F956
0049F954  |> 33DB           XOR EBX,EBX
0049F956  |> 33C0           XOR EAX,EAX
0049F958  |. 5A             POP EDX
0049F959  |. 59             POP ECX
0049F95A  |. 59             POP ECX
0049F95B  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
0049F95E  |. 68 83F94900    PUSH IEstar.0049F983
0049F963  |> 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
0049F966  |. E8 B541F6FF    CALL IEstar.00403B20
0049F96B  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
0049F96E  |. E8 AD41F6FF    CALL IEstar.00403B20
0049F973  |. 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-8]
0049F976  |. E8 A541F6FF    CALL IEstar.00403B20
0049F97B  \. C3             RETN
0049F97C   .^E9 373CF6FF    JMP IEstar.004035B8
0049F981   .^EB E0          JMP SHORT IEstar.0049F963
0049F983   . 8BC3           MOV EAX,EBX
0049F985   . 5E             POP ESI
0049F986   . 5B             POP EBX
0049F987   . 8BE5           MOV ESP,EBP
0049F989   . 5D             POP EBP
0049F98A   . C3             RETN

算法总结:
注册码十六进制值=注册名每个字符的十六进制ASCII码依次相加+127EFB+541BB9
只要把注册码十六进制值转换成十进制就是注册码了。

内存注册机制作:地址:0049F937  指令:3B  长度:2  寄存器方式:EDX 十进制

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容