老文章档案 · 2003 年

IEPopupKiller V1.21 算法分析

破解教程 · 算法分析 · 2003-06-25 · 作者:fxyang 人气: · 出处:嬴政天下整理收藏)

IEPopupKiller V1.21

软件大小: 789 KB

软件语言: 简体中文

软件类别: 国产软件 / 共享版 / 浏览辅助

应用平台: Win9x/NT/2000/XP

界面预览:

加入时间: 2003-04-03 10:33:55

下载次数: 3297

推荐等级:

联 系 人: support_max@wingsofts.com

开 发 商: http://www.wingsofts.com/

软件介绍:

目前的网上广告查杀方式一般只有两种方式:一种是在IE打开页面之前查杀,

一种是在IE打开之后查杀。前者需要对下载页面文件进行解析,这极大的占用了系

统资源。相当于用户每打开一个页面,需要系统解析两次(IE和查杀软件)。而且

往往是禁止任何窗口弹出,这显然是不合理的。因为有很多站点要弹出一个BBS,这

应该属于有用窗口,而非广告窗口。而后者则也多是将全部弹出窗口关闭。而IEPopupKiller则采用一种智能化的查杀方式,在IE打开页面之后进行查杀,资源占用少,查杀速度快,判断准确。查杀弹出式广告,并保留有用页面,已得到众多用户的共识。是保护大家上网免受广告侵扰的强兵利器!

【作者声明】:本人只是对Crack感兴趣,没有其它目的。

【破解工具】:Ollydbg1.09 中文版、trw2000 v1.23

—————————————————————————————

【过 程】:

这个软件的断点还是不好下,在API中找了几个常用的下了不能被中断,再次用trw2000的

万能断点才能来到软件的领空.还是老办法,用trw2000找到注册码计算的入口后.用Ollydbg

跟踪.输入试验码: 7894561230123456 来到这里是计算的核心:

004308F0 PUSH -1

004308F2 PUSH IEPopupK.004B4C80

004308F7 MOV EAX, DWORD PTR FS:[0]

004308FD PUSH EAX

004308FE MOV DWORD PTR FS:[0], ESP

00430905 SUB ESP, 1C

00430908 PUSH EBX

00430909 PUSH EBP

0043090A PUSH ESI

0043090B PUSH EDI

0043090C LEA EAX, DWORD PTR SS:[ESP+3C]

00430910 LEA ECX, DWORD PTR SS:[ESP+14]

00430914 PUSH EAX

00430915 MOV DWORD PTR SS:[ESP+38], 0

0043091D CALL IEPopupK.00481055

00430922 MOV ESI, DWORD PTR SS:[ESP+14] ; ESI=01226E98,(ASCII "7894561230123456")

00430926 MOV EDX, DWORD PTR DS:[ESI-8] ; EDX=0C

00430929 CMP EDX, 0C ; EDX=0C 注册码的长度是12位

0043092C JNZ IEPopupK.00430AE7 ; 试验码改为 789456123012

00430932 XOR ECX, ECX

00430934 TEST EDX, EDX

00430936 JLE SHORT IEPopupK.00430950

00430938 MOV AL, BYTE PTR DS:[ECX+ESI] \ AL=DS:[ECX+ESI]=37 ('7')

0043093B CMP AL, 41 |

<--注册码的取值范围是5A<注册码>41 即是大写字母

0043093D JL IEPopupK.00430AE7 |<--试验码再次改为 QWERTYUIOPAS

00430943 CMP AL, 5A |

00430945 JG IEPopupK.00430AE7 |

0043094B INC ECX |

0043094C CMP ECX, EDX |

0043094E JL SHORT IEPopupK.00430938 /

00430950 MOV EAX, DWORD PTR DS:[4DC440]

00430955 MOV DWORD PTR SS:[ESP+24], EAX

00430959 MOV DWORD PTR SS:[ESP+20], EAX

0043095D MOV DWORD PTR SS:[ESP+1C], EAX

00430961 MOV DWORD PTR SS:[ESP+18], EAX

00430965 LEA ECX, DWORD PTR SS:[ESP+28]

00430969 PUSH 3

0043096B MOV BL, 5

0043096D PUSH ECX

0043096E LEA ECX, DWORD PTR SS:[ESP+1C]

00430972 MOV BYTE PTR SS:[ESP+3C], BL ; BL=5

00430976 CALL IEPopupK.004728FF ; <--取注册码的前三位

0043097B PUSH EAX

0043097C LEA ECX, DWORD PTR SS:[ESP+28]

00430980 MOV BYTE PTR SS:[ESP+38], 6

00430985 CALL IEPopupK.00481419

0043098A LEA ECX, DWORD PTR SS:[ESP+28]

0043098E MOV BYTE PTR SS:[ESP+34], BL ; BL=5

00430992 CALL IEPopupK.004812E0

00430997 PUSH 3

00430999 LEA EDX, DWORD PTR SS:[ESP+2C]

0043099D PUSH 3

0043099F PUSH EDX

004309A0 LEA ECX, DWORD PTR SS:[ESP+20]

004309A4 CALL IEPopupK.004727ED ; <--取注册码的第二个三位"RTY"

004309A9 PUSH EAX

004309AA LEA ECX, DWORD PTR SS:[ESP+24]

004309AE MOV BYTE PTR SS:[ESP+38], 7

004309B3 CALL IEPopupK.00481419

004309B8 LEA ECX, DWORD PTR SS:[ESP+28]

004309BC MOV BYTE PTR SS:[ESP+34], BL

004309C0 CALL IEPopupK.004812E0

004309C5 PUSH 3

004309C7 LEA EAX, DWORD PTR SS:[ESP+2C]

004309CB PUSH 6

004309CD PUSH EAX

004309CE LEA ECX, DWORD PTR SS:[ESP+20]

004309D2 CALL IEPopupK.004727ED

004309D7 PUSH EAX

004309D8 LEA ECX, DWORD PTR SS:[ESP+20]

004309DC MOV BYTE PTR SS:[ESP+38], 8

004309E1 CALL IEPopupK.00481419

004309E6 LEA ECX, DWORD PTR SS:[ESP+28]

004309EA MOV BYTE PTR SS:[ESP+34], BL

004309EE CALL IEPopupK.004812E0

004309F3 LEA ECX, DWORD PTR SS:[ESP+28]

004309F7 PUSH 3

004309F9 PUSH ECX

004309FA LEA ECX, DWORD PTR SS:[ESP+1C]

004309FE CALL IEPopupK.00472883

00430A03 PUSH EAX

00430A04 LEA ECX, DWORD PTR SS:[ESP+1C]

00430A08 MOV BYTE PTR SS:[ESP+38], 9

00430A0D CALL IEPopupK.00481419

00430A12 LEA ECX, DWORD PTR SS:[ESP+28]

00430A16 MOV BYTE PTR SS:[ESP+34], BL ; 同上,按三位一组取出

00430A1A CALL IEPopupK.004812E0

00430A1F MOV EDI, DWORD PTR SS:[ESP+1C] ; EDI<--0134C658,(ASCII "UIO")

00430A23 MOV EBP, DWORD PTR SS:[ESP+18] ; EBP<--0134C6A8,(ASCII "PAS")

00430A27 MOV ESI, DWORD PTR SS:[ESP+20] ; ESI<--01227668,(ASCII"RTY")

00430A2B MOV EAX, DWORD PTR SS:[ESP+24] ; EAX<--0134C608,(ASCII"QWE")

00430A2F MOV BL, BYTE PTR DS:[EDI] ; BL=DS:[EDI]=55 ('U')

00430A31 MOV DL, BYTE PTR DS:[ESI] ; DL=DS:[ESI]=52 ('R')

00430A33 MOV CL, BYTE PTR DS:[EAX] ; CL=DS:[EAX]=51 ('Q')

00430A35 MOV BYTE PTR SS:[ESP+12], BL

; BL=DS:[EDI]=55 ('U')==>SS:[12E732]

00430A39 MOV BL, BYTE PTR SS:[EBP] ; BL=SS:[EBP]=50 ('P')

00430A3C MOV BYTE PTR SS:[ESP+13], BL

; BL=SS:[EBP]=50 ('P')==>SS:[12E733]

00430A40 MOVSX EBX, BYTE PTR SS:[ESP+12] ; EBX<--SS:[12E732]=55 ('U')

00430A45 MOVSX EDX, DL ; EDX=DL=52 ('R')

00430A48 MOVSX ECX, CL ; ECX=CL=51 ('Q')

00430A4B SUB EDX, EBX

; EDX=52 ('R')-55 ('U')=FFFFFFFD

00430A4D ADD EDX, ECX ; EDX==FFFFFFFD+51 ('Q')=4E

00430A4F MOVSX ECX, BYTE PTR SS:[ESP+13] ; ECX<--SS:[12E733]=50 ('P')

00430A54 INC ECX ; ECX+1=51

00430A55 CMP EDX, ECX ; EDX=51 EDX=4E

00430A57 JE SHORT IEPopupK.00430A64

; <--第一个条件(hex值)--第4位-第7位+第1位-1=第10位.改第10位为4D ('M')继续.

00430A59 MOV BYTE PTR SS:[ESP+34], 4

00430A5E LEA ECX, DWORD PTR SS:[ESP+18]

00430A62 JMP SHORT IEPopupK.00430AB8

00430A64 MOV DL, BYTE PTR DS:[EDI+1] ; DL=49 ('I')

00430A67 MOV BL, BYTE PTR DS:[EAX+1] ; BL=57 ('W')

00430A6A MOV CL, BYTE PTR DS:[ESI+1] ; CL=54 ('T')

00430A6D MOVSX EBX, BL ; EBX=57 ('W')

00430A70 MOVSX EDX, DL ; EDX=49 ('I')

00430A73 MOVSX ECX, CL ; ECX=54 ('T')

00430A76 SUB EDX, EBX ; EDX=49-57=FFFFFFF2

00430A78 ADD EDX, ECX ; EDX=54+FFFFFFF2=46

00430A7A MOVSX ECX, BYTE PTR SS:[EBP+1] ; ECX<--41 ('A')

00430A7E INC ECX ; ECX=41 ('A')+1=42

00430A7F CMP EDX, ECX ; EDX=46 ECX=42

00430A81 JE SHORT IEPopupK.00430A8E

; <--第2个条件(hex值)--第8位-第2位+第5位-1=第11位.改第11位为45 ('E')继续.

00430A83 MOV BYTE PTR SS:[ESP+34], 4

00430A88 LEA ECX, DWORD PTR SS:[ESP+18]

00430A8C JMP SHORT IEPopupK.00430AB8

00430A8E MOV CL, BYTE PTR DS:[EDI+2] ; CL=4F ('O')

00430A91 MOV DL, BYTE PTR DS:[ESI+2] ; DL=59 ('Y')

00430A94 MOV AL, BYTE PTR DS:[EAX+2] ; AL=45 ('E')

00430A97 MOV BL, BYTE PTR SS:[EBP+2] ; BL=53 ('S')

00430A9A MOVSX EDX, DL ; EDX=59 ('Y')

00430A9D MOVSX ECX, CL ; ECX=4F ('O')

00430AA0 SUB ECX, EDX ; ECX=4F-59=FFFFFFF6

00430AA2 MOV BYTE PTR SS:[ESP+34], 4

00430AA7 MOVSX EDX, AL ; EDX=45 ('E')

00430AAA MOVSX EAX, BL ; EAX=53 ('S')

00430AAD ADD ECX, EDX ; ECX=FFFFFFF6+45=3B

00430AAF DEC EAX ; EAX=53-1

00430AB0 CMP ECX, EAX ; ECX=3B EAX=52

00430AB2 LEA ECX, DWORD PTR SS:[ESP+18]

00430AB6 JE SHORT IEPopupK.00430B0A

; <--第3个条件(hex值)--第9位-第6位+第3位+1=第12位.

/ 说明:由于ECX=3B+1=3C < 41 使得到的第12位不是大写字母,所以把第三位的hex值加大

所以第三位改为58 ('X') 这样计算出来的第12位等于4F ('O')

; 注册吗改为 QWXRTYUIOMEO 继续

00430AB8 CALL IEPopupK.004812E0

00430ABD LEA ECX, DWORD PTR SS:[ESP+1C]

00430AC1 MOV BYTE PTR SS:[ESP+34], 3

00430AC6 CALL IEPopupK.004812E0

00430ACB LEA ECX, DWORD PTR SS:[ESP+20]

00430ACF MOV BYTE PTR SS:[ESP+34], 2

00430AD4 CALL IEPopupK.004812E0

00430AD9 LEA ECX, DWORD PTR SS:[ESP+24]

00430ADD MOV BYTE PTR SS:[ESP+34], 1

00430AE2 CALL IEPopupK.004812E0

00430AE7 LEA ECX, DWORD PTR SS:[ESP+14]

00430AEB MOV BYTE PTR SS:[ESP+34], 0

00430AF0 CALL IEPopupK.004812E0

00430AF5 LEA ECX, DWORD PTR SS:[ESP+3C]

00430AF9 MOV DWORD PTR SS:[ESP+34], -1

00430B01 CALL IEPopupK.004812E0

00430B06 XOR EAX, EAX <---EAX清0 (赋注册失败的标志)

00430B08 JMP SHORT IEPopupK.00430B5D

00430B0A CALL IEPopupK.004812E0

00430B0F LEA ECX, DWORD PTR SS:[ESP+1C]

00430B13 MOV BYTE PTR SS:[ESP+34], 3

00430B18 CALL IEPopupK.004812E0

00430B1D LEA ECX, DWORD PTR SS:[ESP+20]

00430B21 MOV BYTE PTR SS:[ESP+34], 2

00430B26 CALL IEPopupK.004812E0

00430B2B LEA ECX, DWORD PTR SS:[ESP+24]

00430B2F MOV BYTE PTR SS:[ESP+34], 1

00430B34 CALL IEPopupK.004812E0

00430B39 LEA ECX, DWORD PTR SS:[ESP+14]

00430B3D MOV BYTE PTR SS:[ESP+34], 0

00430B42 CALL IEPopupK.004812E0

00430B47 LEA ECX, DWORD PTR SS:[ESP+3C]

00430B4B MOV DWORD PTR SS:[ESP+34], -1

00430B53 CALL IEPopupK.004812E0

00430B58 MOV EAX, 1 <---EAX=1 (赋注册成功的标志)

00430B5D MOV ECX, DWORD PTR SS:[ESP+2C]

00430B61 POP EDI

00430B62 POP ESI

00430B63 POP EBP

00430B64 POP EBX

00430B65 MOV DWORD PTR FS:[0], ECX

00430B6C ADD ESP, 28

00430B6F RETN 4

======================================================

到这里注册码的算法跟踪结束,现在总结一下:

注册码的首要条件:

1.长度是12位

2.必须是大写字母

注册码的计算方法:(hex值)

1.第4位-第7位+第1位-1=第10位

2.第8位-第2位+第5位-1=第11位

3.第9位-第6位+第3位+1=第12位

by fxyang[OCN]

2003.4.16

标 题:IEPopupKiller 注册机源码

发信人:yimotep

时 间:2003/04/29 11:10pm

详细信息:

[这个贴子最后由yimotep在 2003/04/29 11:10pm 第 1 次编辑]

读fxyang兄的简单算法---IEPopupKiller V1.21 有感而发

Turbo C 2.0 、windows98 下通过

#include<stdio.h>

#include <string.h>

#include <stdlib.h>

int main ()

{char m[27]={'A','B','C','D','E','F','G','H','I','J','K',

'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

int a,b,c,d,e,f,g,h,i,j,k,l,s;

randomize();

for(i=0;;i++)

{ a=random(26);

b=random(26);

c=random(26);

d=random(26);

e=random(26);

f=random(26);

g=random(26);

h=random(26);

i=random(26);

j=random(26);

k=random(26);

l=random(26);

if (m[d]-m[g]+m[a]-1==m[j]&&m[h]-m[b]+m[e]-1==m[k]&&m[i]-m[f]+m[c]+1==m[l])

break;

}

printf("serial is :\n");

printf("%c%c%c%c%c%c%c%c%c%c%c%c\n",m[a],m[b],m[c],m[d],m[e],m[f],m[g],m[h],m[i],m[j],m[k],m[l]);

printf("\n\nMake by fxyang && yimotep.\n");

}

各位大哥见笑了 ^_^"

(出处:嬴政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史