WingIDE Professional 4.1.12 Crack

Today, I’ll talk about how to crack WingIDE Professional 4.1.12.

Warning:

DO NOT make commercial use of anything.

If you believe something on this Site has infringed your intellectual property rights, please contact us.

What’s WingIDE ?

Wingware's Python IDE is an Integrated Development Environment designed specifically for the Python programming language. Since 1999, Wingware has focused on Python.

How to get WingIDE?

You can download WingIDE from http://wingide.com/downloads.

It’s a cross-platform software and the latest version now is 4.1.12. It has three different versions: WingIDE 101, WingIDE Personal and WingIDE Professional.

How to Crack WingIDE Professional 4.1.12?

After install Python and WingIDE on your computer, DO NOT run WingIDE first. You should change system time to a month ago. Then launch WingIDE and you can get a 10-day trial serial number for temporarily use. After that, exit from WingIDE.

Open the installation folder of WingIDE, and open /bin/2.5/src.zip. Extract the file abstract.pyo in the process folder. The file is used for validating the software.

The file abstract.pyo is a bytecode in Python, so we should disassemble it and analyze it. Now, we need a tool called unpyclib library, and you can get it from http://pypi.python.org/pypi/unpyclib/0.8.1, and extract it.

Please notice that, if you use python 3.x or higher, you cannot run it properly (I even tried to translate it to python3 code by using 2to3 library which is supplied by python, but it still doesn’t work). So, please use a lower version of python.

After that, please execute a command in the shell window:

python application.py -d abstract.pyo > abstract.asm

And you will get a new file abstract.asm in the current folder. The file is used to analyse the file abstract.pyo.

The function we concerned about is called _GetTermDaysLeft:

000051F0    STR: '_GetTermDaysLeft' (10 00 00 00 5F 47 65 74 54 65 72 6D...)
……
00005257    STR: 'tx00x00dx01x00x83x01x00|x01x00dx02x00<x6x00tx01x00D].x00}x03x00|x01x00ix02x00...' (A9 03 00 00 74 00 00 64 01 00 83 01...)
……
00000212     69 - LOAD_ATTR           '_locale_valid'
00000215     7D - STORE_FAST          'valid'
00000218     57 - POP_BLOCK           
00000219     6E - JUMP_FORWARD        -> 00000229
0000021C     01 - POP_TOP             
0000021D     01 - POP_TOP             
0000021E     01 - POP_TOP             
0000021F     64 - LOAD_CONST          0
00000222     7D - STORE_FAST          'valid'
00000225     6E - JUMP_FORWARD        -> 00000229
00000228     58 - END_FINALLY         
00000229     7C - LOAD_FAST           'valid'
0000022C     70 - JUMP_IF_TRUE        -> 00000243
0000022F     01 - POP_TOP             
00000230     74 - LOAD_GLOBAL         'kLicenseCorrupt'
00000233     74 - LOAD_GLOBAL         '_'
00000236     64 - LOAD_CONST          'Invalid license activation'
00000239     83 - CALL_FUNCTION       
0000023C     66 - BUILD_TUPLE         
0000023F     53 - RETURN_VALUE        
00000240     6E - JUMP_FORWARD        -> 00000244
00000243     01 - POP_TOP             
00000244     7C - LOAD_FAST           'self'
00000247     69 - LOAD_ATTR           '_GetTermDaysLeft'
0000024A     7C - LOAD_FAST           'lic'
0000024D     83 - CALL_FUNCTION       
00000250     7D - STORE_FAST          'daysleft'
00000253     7C - LOAD_FAST           'daysleft'
00000256     64 - LOAD_CONST          -1
00000259     6A - COMPARE_OP          "=="
0000025C     6F - JUMP_IF_FALSE       -> 00000273

The most important step is to change 6F to 70. But how to change it? You need a binary editor such as UltraEdit.

After open abstract.pyo with UltraEdit, you will find lots of hexadecimal code, and which address should we modify? We can calculate by following way:

First, seach “A9 03 00 00 74 00 00 64 01 00 83 01” in the file abstract.asm, and you will find an address at the front of the line: 00005257H. Next, find another line “6F - JUMP_IF_FALSE-> 00000273”, and get another address at the front of line: 0000025CH. So the address we should modify in the abstract.pyo is 00005257H + 0000025CH = 54B3H.

So, the address of data we should modify is 54B3H. So, find the data in 54B3H. And change 6A into 70 as following:

UltraEdit

After modify it, replace the file abstract.pyo in the /bin/2.5/src.zip/process/ with the new one.

Before launch the WingIDE, please change the system time to now. And you’ll see the WingIDE has been cracked.

Wing-IDE

Contact Us
  • Room 614, Zonghe Building, Harbin Institute of Technology
  • cshzxie [at] gmail.com