有前人爆破的经验就是好,前人是爆破abstract.pyo中的代码来实现的,对于完美主义的我们来说,直接弄个注册码多好~~
一. 工具:
1. uncompyle2
2. IDA Pro 6.1
3. WingIDE 5.0本身
二. 工具安装
1. 安装Python2.7
2. 安装WinIDE 5.0
3. 解压uncompyle2,进入解压目录,执行命令python setup.py install
三. 破解过程
1. 直接拷贝C:\Wing IDE 5.0\bin\2.7\src.zip到C:\crack,解压。
2. cd C:\Python27\Scripts,运行python uncompyle2 --py -o . c:\crack\src,反编译所有的pyo文件。
3. 启动WingIDE 5.0,选择”Obtain or extend a trial license”,获得个10天的试用。
点击help-->Enter License…,弹出的对话框中选择”Install and activate a permant license”,
随便输几个啥,我这里输入”FFFF”,提示如下图:
哈,说的很明白了。
4. 找License ID的规律
用WingIDE打开c:\crack\src\process\wingctl.py,搜索字符串”Invalid license id”,定位到这串代码
if self.__fRadioActivate.get_active():
id = self.__fLicenseIDEntry.get_text()
errs, lic = abstract.[COLOR="Red"]ValidateAndNormalizeLicenseID(id)[/COLOR]
if len(errs) == 0 and id[0] == 'T':
errs.append(_('You cannot enter a trial license id here'))
if len(errs) > 0:
msg = _('Invalid license id: %s. Please check and correct it. Errors found were:\n\n%s') % (id, '\n'.join(errs))
buttons = [dialogs.CButtonSpec(_('_OK'), None, wgtk.STOCK_OK)]
dlg = messages.CMessageDialog(self.fSingletons, _('Invalid License ID'), msg, [], buttons)
dlg.RunAsModal(self)
return True
def ValidateAndNormalizeLicenseID(id):
errs, id2 = __ValidateAndNormalize(id)
if len(id2) > 0 and id2[0] not in kLicenseUseCodes:
errs.append(_('Invalid first character: Should be one of %s') % str(kLicenseUseCodes))
if len(id2) > 1 and id2[1] != kLicenseProdCode:
cur_product = 'Wing IDE %s' % config.kProduct
lic_product = kLicenseProdForCode.get(id2[1], None)
if lic_product is None:
lic_product = _('an unknown product')
else:
lic_product = 'Wing IDE %s' % config.k_ProductNames[lic_product]
errs.append(_('Your license is for %s, but you are currently running %s. Please download the correct product from d62K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6A6L8X3N6%4j5i4u0W2i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8K6 or upgrade your license at d0eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4K9h3&6Y4N6$3q4J5k6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4@1L8%4u0W2i4K6u0r3N6i4m8Y4M7X3q4V1k6g2)9J5y4#2)9J5z5b7`.`. % (lic_product, cur_product))
if len(errs) > 0:
check_code = id.strip().upper().replace('-', '')
if len(check_code) == 16:
looks_like_11 = True
for c in check_code:
if c not in '0123456789ABCDEF':
looks_like_11 = False
if looks_like_11:
errs = [_('You cannot activate using a Wing IDE 1.1 license: Please use a trial license or upgrade your license at f25K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6A6L8X3N6%4j5i4u0W2i4K6u0W2j5$3!0E0i4K6u0r3M7%4c8G2M7X3g2Q4x3V1k6#2M7r3N6J5j5h3c8W2i4K6t1%4i4K6t1&6i4K6g2p5
if len(errs) > 0:
return (errs, None)
else:
return ([], id2)
def __ValidateAndNormalize(code):
"""Remove hyphens and extra space/chars in a license id or activation
request, and validate it as within the realm of possibility. Returns
errs, value."""
errs = []
code = code.strip().upper()
code2 = ''
badchars = ''
for c in code:
if c in ('-', ' ', '\t'):
pass
elif c not in textutils.BASE30:
code2 += c
if badchars.find(c) == -1:
badchars += c
else:
code2 += c
if len(badchars) > 0:
errs.append(_('Contains invalid characters: %s') % badchars)
if len(code2) != 20:
errs.append(_('Wrong length (should contain 20 non-hyphen characters)'))
if len(errs) > 0:
return (errs, code2)
else:
return ([], AddHyphens(code2))