Crack UltraEdit (Ver20.00.0.1040), unlimited trial

Source: Internet
Author: User
Tags switch case ultraedit

Because it is the first time to crack the larger business software, so it is necessary to record, in addition the UE price is too expensive ...

0th Step: Prepare

Be ready to hack common software. My common tools are IDA (for static analysis), ollydbg (Dynamic Debugging), Peid (to see if the executable is shelled), w32dasm (software seen in an online instructional video for static search of string resources in the software), Cheatengine (used for game cheating, this is used to dynamically search for strings in the process).

First of all, Uedit32.exe this executable file, Peid found that it does not add shell, it is not surprising, this software is certainly not to add shell.

Second, need to know about the UE registration/activation mechanism: The default installation after the software is not registered/activated state, at this time can try 30 days, after the trial expires, will pop-up prompts, must register to be able to use, not expire can also click "Help", "registration", At this point is the UE's online Activation dialog (as shown), fill in the License ID and password click on the "Activate" button will be to the UE's server to initiate HTTP interaction, without the correct license ID and password is of course not by the server check.

There is another way to activate-offline activation, you need to disable the network card in the case of clicking on the "Activate" button will appear:

Click "Offline Activation", in the dialog box to fill in the "license", "Password", "Code 1", "Verification Code 2", click the "Activate" button, the failure message will pop up:

Note This error message "The code you entered is not valid." You need ... ", the type of hack described in this article starts with this string.

The first step is to find instructions and functions to access the error prompt.

Try static lookups first. Use W32dasm to find the string "The code you entered is invalid. You need ... ", not found.

This guesses that the UE's cue information may be dynamically loaded and read into memory from a file at UE startup. This attempts to find success by using Cheatengine append after:

Continue to use Cheatengine to find out what access to this address is, and to find such a few instructions:

We should only focus on the instructions within the UE module, so here are the first instructions.

Try to the breakpoint on this command, the discovery program is constantly broken down, you can guess that the UE may exist a thread in the execution of the instructions, and also observed that the stack is different after each break, so that the instructions may be located inside a lower function, so the need to use conditional breakpoints, When the value of the Register EDI is equal to 05a27b80, it breaks down. The discovery is not broken again and again, and the command is broken when you try to activate again.

Then you need to start a painful step: you need to find the function that was called when the Activate button was pressed. Note look at the bottom right of the call stack, from the inside out in order to try the various calls under the breakpoint (non-conditional breakpoint), each add a breakpoint, try to let the UE run, to see whether it is just click on the "Activate" button is broken, if not, delete breakpoint, continue in the upper level function under the breakpoint. After several attempts, a call:0099b170 was found.

The second step is to analyze the key instruction logic to determine the verification code/registration code matching.

Turn off Cheatengine, use IDA to disassemble the UE executable file, and find the function 0099b170. Because of the large file size, disassembly may take a long time to be ready.

Analysis disassembly, found that the following instruction is to determine whether the user entered a license:

CMP     0 jnz     Loc_99b2f9

  and subsequent calls to this section of logic with the input of a license but a validation error will be executed:

.Text:0099b8ff LOC_99B8FF:                             ;CODE xref:sub_99b170+783j.Text:0099b8ff                 movedx, [eax].Text:0099b901                 movecx, eax.Text:0099b903                 moveax, [edx+0ch].Text:0099b906                 Pagereax.Text:0099b908                 LeaEDI, [eax+10h].Text:0099b90b                 mov[ebp+var_68], EDI.Text:0099b90e                 Push6d6fh;unsigned int.Text:0099b913                 movbyte ptr [ebp+var_4], 18h.Text:0099b917                 Pager[Email protected]@[email protected]@[email protected];afxfindstringresourcehandle (UINT).Text:0099b91c                 Testeax, eax.Text:0099b91e                 JZShort loc_99b931.Text:0099b920                 Push6d6fh;Lpwidecharstr.Text:0099b925                 Pusheax;hmodule.Text:0099b926                 Leaecx, [ebp+var_80].Text:0099b929                 Pagersub_4098f0.Text:0099b92e                 movebx, [ebp+var_80].Text:0099b931.Text:0099b931 loc_99b931:                             ;CODE Xref:sub_99b170+7aej.Text:0099b931                 Push6d70h;unsigned int.Text:0099b936                 Pager[Email protected]@[email protected]@[email protected];afxfindstringresourcehandle (UINT).Text:0099b93b                 Testeax, eax.Text:0099b93d                 JZShort loc_99b950.Text:0099b93f                 Push6d70h;Lpwidecharstr.Text:0099b944                 Pushfa[;hmodule.Text:0099b945                 LeaECX, [ebp+var_68]

It is therefore assumed that the validation of the UE may be similar to the logic:

= Check (/* input of various users */= Get_str_by_ret (ret); Show_str (str_id) ... 

It is also fortunate to see that there is a preceding directive:

. Text: 0099b1c4                 Push    0               ; benable. Text: 0099b1c6                 mov      ecx, eax. Text: 0099b1c8                 Pager    ; Cwnd::enablewindow (int). Text: 0099B1CD

Use ollydbg to try to modify the. Text:0099b1c4 for push 1, the activation button is no longer grayed out, so the logic of guessing whether the registration code matches or not is in the middle of the above two instructions.

Continuing to analyze Ida's disassembly results, we found two calls to Atoi in the middle:

.Text:0099b337                 PushEbx;char *.Text:0099b338                 movbyte ptr [ebp+var_4],4.Text:0099b33c                 Pager_atoi.Text:0099b341                 AddEsp4.Text:0099b344                 Pusheax.Text:0099b345                 PagerSub_ccda26.Text:0099b34a                 movEDI, eax.Text:0099b34c                 moveax, [ebp+var_6c].Text:0099b34f                 Push0c6h.Text:0099b354                 Pushfa[;char *.Text:0099b355                 Pager_atoi.Text:0099b35a                 AddEsp4

OllyDbg broken to these two places, found their entry to the UE of the Verification Code 1 and the Verification Code 2 of the string, visible, determine whether the registration code matches the logic behind these two atoi.

Continuing the analysis of IDA's disassembly results, it was found that there is one such instruction behind the two atoi:

. Text: 0099b363                 Lea      ecx, [edi-13h]. Text: 0099b366                 CMP     ECX, 0Dh        ; Switch Cases. Text: 0099b369                 ja      Loc_99b8b8      ; jumptable 0099b376 Default case

Thanks to Ida for helping us analyze this as a switch case branch, guess what's behind is the get_str_by_ret you're looking for.

Step three, crack.

OllyDbg try to modify the execution of CMP ecx, 0Dh before the ecx, most likely the correct is 0, try to 0, continue to run, see the Pop-up dialog box, you can also try 30 days. OLLYDBG out of UE process, stop debugging, turn off UE, reopen, no more pop-up trial expiration prompt, cracked success.

Summarize

In fact, the last step to crack, is a good luck, easier to find the judgment logic, if the attempt fails, you may want to continue to find the real check function.

In fact, there are a lot of cracked patches can be downloaded, even cracked version of the UE (but this 20.00.0.1040 version of the not found), as the beginning of the article, the significance of this paper is to record sharing rather than show off.

Can be further extended:

1, I think the rest of the UE's trial time should be written in the registry or a file, if you can find it, it is possible to change the trial time to unlimited length;

2, can challenge the online registration, completely different ideas?

3, on the idea of this article, but also a crack patch, in CMP ecx, 0Dh before modifying the value of ECX, this should be relatively easy, follow-up time to engage.

Crack UltraEdit (Ver20.00.0.1040), unlimited trial

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.