Through the analysis of , The registration code is divided into six parts :

Name: "xxx"

Addr1: "yyy"

Addr2: "zzz" These three characters don't represent length

Key1: "32 A string of hexadecimal numbers " It's in memory in the form of : For example, the string is

"18A519949D4E5F1FAED08A3EAB7CC665" It takes two characters as a byte , In memory in sequence   ===> 18 A5 19 94 wait

Key2: "32 A string of hexadecimal digits " ditto

Chksm: "kk" Just one byte

The second half of the above six parts will be copied to the following location :

xxx 5e2f14

yyy 5e2f65

zzz 5e2fa2

key1 Value 5e2fdf

key2 Value 5e2fef

key1 and key2 The values in are tightly linked in memory .

Chksm Value 5e30f9

The first half of the above six parts , There will be a comparison , That is to say as like as two peas . In addition to the space in the middle, it can be replaced with other characters

use PEID Check and find no shell , Then look at the import table , Find the key function

stay lstrcmpiA Break down , Enter the registration code at will , And then I found out , Register the judgment function in sub_568A74

The separation and copy of the whole string is closely related to sub_569fa4 of , He'll clear some of the separators , Go to the next part .

The first half of the six parts are tested in the following form :

among 5e42fc It's a transfer station :

stay sub_569fa4 in , Will copy the separated string to 5e42fc in , If it's the second half of the string, it will be copied to [5e2F14,+0xeb) The corresponding position of

The above is the separation and partial detection of six registration codes .

Here is checksum How to calculate the value of :

Is to put 5e2f14 At the beginning 0xeb Bytes , Add all in bytes

Because this data block has been set before 0, So there won't be any other factors .

checksum Is to put 5 The second half of each part is added in bytes , The lower byte of the resulting value , Namely checksum The value of the .

in addition 0x5e3238 The value of determines the expiration time of the software

0x5e3238 The value of is determined by key1 The head of word And tail word Exclusive or obtained , Pay attention to the byte order , This value must be in [46e4,5221) Between , High byte must be &&0x80==0

key1 The last of 3 Bytes byte_5e2fec and 0x1f == 0x13 ==>5e2fec == 0x13 or 0x33 0x53 73 93 b3 e3

byte_5e2fec/32 ==> 5e31a2 !=5,8,6 that b3 No way. ` 0 1 2 3 4 5 6

byte_5e31a2 [2,6]

Name: "aaaa"
Addr1: "bbbb"
Addr2: "cccc"
Key1: "2A3C1111111111111111111111535770"
Key2: "11111111111111111111111111111111"
Chksm: "E3"

Genuinely Licensed for personal use. personal use

Software is unlocked. All Updates released before 2018/03/28 are free for me.

The software has been unlocked . 2018 year 3 month 28 All previous upgrades are free for me .

WinHex18.4 Algorithm analysis of more related articles

  1. Fibonacci Sequence algorithm analysis

    /************************************************* * Fibonacci Sequence algorithm analysis ****************************** ...

  2. Data structure and algorithm analysis ——C Language description The single linked list in Chapter 3

    Data structure and algorithm analysis --C Language description The single linked list in Chapter 3 Something very basic . Go through the process . Some people say that the simplest and most stupid way to learn programming is to type the code on the book . I copied the header file ..c The source file is implemented by itself . list.h typede ...

  3. Chapter four Leader Electoral algorithm analysis

    Leader The election Study leader Election algorithm , Mainly from the election overview , Algorithm analysis and source code analysis ( The following chapters write ) Three aspects . Leader Election overview During server startup Leader The election The implicit condition of an election is ZooKeepe ...

  4. Python Data structure and algorithm -- Algorithm analysis

    In computer science , Algorithm analysis (Analysis of algorithm) It analyzes the amount of computing resources needed to execute a given algorithm ( For example, calculating time , Memory usage, etc ) The process of . The efficiency or complexity of the algorithm is theoretically expressed as a function . Its definition ...

  5. Algorithm analysis Analysis of Algorithms -------GeekforGeeker translate

    Algorithm analysis  Analysis of Algorithms Why do you do performance analysis ?Why performance analysis? There are many important factors we should consider in the field of computer Like user friendliness , modularization , Security ...

  6. Sum of factorials & Program running time & Algorithm analysis

    example : Input n, Calculation S = 1! + 2! + 3! + 4! + ... + n! The last six ( Without leading 0). among n ≤ 106. analysis : Considering the data overflow, the program is as follows : #include <stdio ...

  7. GC One of --GC The algorithm analysis of 、 Garbage collector 、 Introduction to memory allocation strategy

    One . summary garbage collection Garbage Collection Usually called “GC”, It was born in 1960 year MIT Of Lisp Language , After more than half a century , It's very mature now . jvm in , Program counter . Virtual machine stack . Ben ...

  8. XoftSpy 4.13 Analysis of the registration algorithm

    [ title ]XoftSpy 4.13 Analysis of the registration algorithm [ author ]forever[RCT] [ Language ]VC [ Tools ]ida4.6,ollydbg1.1 [ Text ]        The algorithm of this software is very simple , It's just for reverse division ...

  9. Data results and algorithm analysis (1)&mdash;&mdash; Algorithm analysis

          While making sure an algorithm is correct , We should also ensure the effectiveness of the algorithm . The most important standard time for algorithm analysis is runtime T(N), Run time and the number of input elements N of . Mathematical basis         T(N) = O(f(N)) Express T(N ...

Random recommendation

  1. python Corpus processing ( Reading files from a folder , participle , To stop using words , Go to single word )

    # -*- coding:utf8 -*- import os import jieba def splitSentence(inputFile): fin = open(inputFile, 'r' ...

  2. Quartus Pin assignment of

    Some functions related to pin assignment are in assignments Under menu , Remove assignments... Back-Annotate Assignment... Import Assignment... ...

  3. Use encryption technology to protect Java Source code / customized ClassLoader

    Why encrypt ? For the traditional C or C++ For languages like that , To be in Web It's easy to protect the source code on the computer , Just don't publish it . Unfortunately ,Java The source code of the program is easy to be peeked at by others . As long as there's a decompiler , Anyone can analyze other people's code ...

  4. addClass function

    javascript: function addClass(id,new_class){ var i,n=0; new_class=new_class.split(","); fo ...

  5. Xidian OJ (Problem 1006 - Turntable game )-- Dynamic programming

    Topic link : http://acm.xidian.edu.cn/land/problem/detail?problem_id=1006 Description wm Recently I like a boring turntable unlocking game , He ...

  6. HDOJ1005 The sequence

    Problem Description A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...

  7. jrae Source code parsing ( Two )

    This paper describes in detail the RAECost and SoftmaxCost Two classes . SoftmaxCost We already know .SoftmaxCost Class is given features and label Under the circumstances ( Super parameters are given ), Measure a given weight ( ...

  8. centos 6 Installation error

    Missing ISO image The installer has tried to . but cannot find it on the hard drive. Please copy thi ...

  9. Golang Containers are different from header Parsing

    Make a note of , use golang Implement a static resource container , Worship the strong man http.Handle("/", http.FileServer(http.Dir(currentPath+"/ ...

  10. python Statistical analysis of data

    #-*- coding: utf-8 -*- # Statistical analysis of catering sales data from __future__ import print_function import pandas as pd cateri ...