How To Update A Crack Yourself Using A Pattern Search, ANYONE INTERESTED - CGPersia Forums
How To Update A Crack Yourself Using A Pattern Search, ANYONE INTERESTED - CGPersia Forums
Quote:
Hi Folks, Is anyone interested in "How to update a crack yourself using a pattern search" ???
I considered a rewrite of my Pattern search that would allow members to update a crack themselves ! A tutorial would also be
needed explaining how to replace memory offsets with ?? to do a search for code to patch.
Considered using Spriter v11.0 as an example since the code has changed very little since I cracked v7 I included a Search
and Patch in the Recent Release of v11 Activation that I just posted.
Don't know whether this should be posted here, or in the Reversing section ? I think a lot of members would like to be able to
update cracks themselves, but don't have access to the Reversing Section.
This is just a feeler post to get opinions, and see if members are interested. ANYONE INTERESTED ???
Ok, it looks like a lot of members are interested. I have received a lot of P.M.s from members wanting to
learn, but don't have access to the Reversing Section.
EvilEngineer has already created a short Tutorial on this in the Reversing section, but I will try to keep it simple, use
examples, and also include detailed Instructions on How to Crack.
I think members should have access to Tutorials, but section for crackers to work on cracks should remain
private to prevent developers access.
Lets get cracking. I request that you share, and post a release for other members after testing as that's what it's all
about.
Forget the you stole my crack bullshit, as neglected crack updates are open game for someone else to crack. The thrill is
gone after the 1st time anyway, move on.
I also request that you mention Credit to original Cracker, If you are updating a Crack then post your release on the
Original Crackers Thread as a Crack Update. Teamwork !
I have several cracks that members have updated themselves, and seem to be working OK without me having to do a update
unless members report problems with the crack update.
I try to provide Pattern Search and Patch for future releases, so I don't have to update the crack, unless the search pattern
eventually doesn't work, and needs to be updated.
Tutorial will be kept as simple as possible. Tutorial explains, how to update an existing
Crack To the next version by searching for Hex Code to change, and Patching with Hex Editor.
Video Tutorial : Step by Step how to crack any program, basic understanding of Machine Code, Hex,
Assembly Language used in Debugger, and how to find code to patch using a Debugger.
The Example Program used will be a Crack update from Spriter Version 7 to Spriter Version 11.
A request for Spriter v11. The name was familiar, a search for existing v11 crack was not
found, but v7had been cracked by countryboy.
Surprised, 4 versions had been released without a crack update, or anyone cracking a very easy to
crack program.
While v11 code was being analyzed by IDA, took a look at what was done in Version 7, a partial
sequential byte search found the code quickly.
A excellent example for a Tutorial on how to update a crack to next version, didn't need to run
program in Debugger to find "Code to change" to create a Crack.
The v11 Code was basically the same Code as v7 with only the offsets changed when the Code
was Compiled into a later version.
Tutorial explains, how to locate the same Hex code to Patch in a later release by considering the offset part
of Instructions when searching.
Most programs are Cracked by changing a ( Conditional jump ) to Jump, or not
Jumping. The second part of a jump instruction is how many bytes to jump.
Number of bytes to jump can change when the Program is re-compiled into a later Release. There
are about a half dozen Instructions that use a offset as part of Instruction.
Tutorial covers most used instructions, what to look for, how to update a crack, and how
to find code to change to Crack any Program, any Operating System, Executable, or .dll
Link(s):
https://dailyuploads.net/2gcu25alsbor#
DOWNLOAD : HexExplorer
Link(s):
https://sourceforge.net/projects/hexplorer/
Link(s):
https://www.mirrored.to/files/O4FMEOJ1/Spriter-Pro-7_Setup-Activation.rar_links
Password: countryboy
DOWNLOAD : Spriter Pro v11 - INSTALLER - Example used
Link(s):
https://brashmonkey.com/brashmonkey/spriter/windows/Spriter_r11.zip
DOWNLOAD : Spriter Pro 9.0 : MAC INSTALLER - ( 99 meg ) - Example used ( yes, how to crack the Mac Version will also be
covered ! )Version will also be covered ! )
Link(s):
https://brashmonkey.com/brashmonkey/spriter/mac/Spriter_free_R9.dmg
DOWNLOAD : IDA Pro v6.8 and Hex-Rays Decompiler (ARM/x86/x64)+Tutorials - File Size: 166Mb RAR file with no password ...
Link by : Seezar
Link(s):
https://mega.nz/#!EYpjVTaa!PbBDVPq14iwi3i2aPYMxEG4tOWDlj27lyr1wx5KaRTE
This image has been resized. Click this bar to view the full image. The original image is sized 1530x821.
Surprise : It's not Found ! There seems to be a offset difference. The Next Update will show how to find the Patched
Code.
Link(s):
74178D44242868647B940050FFD683C40884C07404 74178D44242868C46B960050FFD683C40884C07404
NOTE : All offsets change on Compile ... Highlighted Code: 68647B9400 := IDA - PRO : INSTRUCTION : [ .text:004F403A
push offset dword_966BC4 ]
The instructions pushes the memory offset of the double word at address 966bC4 onto the Stack. The first part of the Instruction
( 68 is push ) the remaining part of the instruction is the offset address.
HOW TO PATCH : Always save a backup. Patch it using a HEX EDITOR, and see if it works ...
Place the cursor on the 74 17 - change the 17 to 00, and Place cursor on the 74 04, and change the 04 to 00 ...
Click on save, or save as.
Congratulations, you just cracked a program by changing 2 bytes, and did a successful Crack update !
HOW IT WAS CRACKED, AND WHAT WAS CRACKED :
A Function was cracked. What did the Function do ? It checks the Serial, and returns a 1 for good serial, or 00 for bad
serial.
Windows programs don't provide Debug Information, but most MAC Programs have debug information with Names of the
Procedures, and Functions.
No wandering around in a Maze with NO Landmarks trying to figure out what that guy does for a living.
In Mac version : Function is named : SerialEncoder::checkSerial more on Mac version crack later, and how the compiler
can flip the script requiring a Far jump instead of not jumping to return that needed 1.
The Hex Numbers were changed to prevent jumping over a instruction in list that needed to be run. The Instruction at IDA : Line
Number 004F4049 ( mov bl, 1 ) needed to be run to move a 1 to Register BL,
because Register BL is moved to Register AL at end of Function, before the Function Return. THE FUNCTION NOW RETURNS 1 IN
REGISTER AL := GOOD SERIAL !
PATTERN SEARCH USED IN Spriter version 11 Search, and Patch Activation Setup Release
Link(s):
83 C4 08 84 C0 74 17 8D 44 24 28 68 ?? ?? ?? ?? 50 FF D6 83 C4 08 84 C0 74 04 B3 01 EB ?? 8D ?? ?? ?? 50 51 8B CC 50
Search Pattern starts before code to change at IDA : ( .text:004F402F add esp, 8 ). The ?? after 68 is offset explained above.
The ?? after the EB is short jump to Function End, and actually too far,
because the compiler may change compiled code length, and search may not find code due to a 1 byte difference. The ?? after 8D is
for Instruction ( lea eax, [esp+20h+arg_4] )
I wrote the code for the Pattern Searcher. It first searches for the Pattern, and then searched the found pattern for code to
change: 7417 I would normally ?? the 17 in jump, but it's a very short jump.
Search Pattern of about 16 to 32 bytes finds code with no problem, but recently I rewrote the search code to allow selection for
occurrences of duplicate patterns found.
If pattern changes then I update pattern, but it still searches for old, if New isn't found. Hit Film has gone through a half dozen versions,
and it's still finding the pattern, and code to change.
In my Releases : I always say with minor code changes !
I will do a short section on DUP at Tutorial end. DUP does a pattern search & patch. DUP is also a loader as I looked at it, but
it didn't do what I wanted, so I wrote the code for the Loader I use.
Questions : Why was the Numbers changed ? How did you find what to change to crack it
?What is an offset ? What is a Opcode ? What is a Register ??
This image has been resized. Click this bar to view the full image. The original image is sized 1325x827.
TOOL ABOVE IS A NICE TOOL TO HAVE IN YOUR CRACKING TOOLKIT ... View Machine Code Instruction - Opcode +
Assembly
Registers listed above are 16 bit Registers for 32 bit Registers : add a E to Name,
and AXBecomes EAX, BX becomes EBX. For 64 Bit : add a R to Register Name,
and AX becomes RAX.
SHL is Shift Left, and act directly on registers by rotating the Bits left as a Multiply by 2 per
shift. SHRis Shift Right, and a divide by 2. Shift is faster than multiply, and divide.
An old saying is multiply if you must, but never ever divide. Worst error is divide by zero.
The andinstruction, and or instruction work on bits, and not Instruction flips bits, as 1 becomes
0, and 0 becomes 1.
Item of interest to a Cracker is the Instruction XOR used to zero a Register, and when changing
code to set a register to zero, it's a shorter instruction than using move 0 to a Register.
Registers can be substituted, and used in place of other Registers, but need to keep in mind that
some Instructions like movsb, or movsw Increment Registers like SI, and DI. Click : more
information
CALL is a Instruction in the list that calls a separate list of instructions : Procedure,
or Functionthat does a job, and returns to the next line in the list. Click : more information
The instruction in the list after a call can check if Called Function succeeded, or failed, and jump, or
skip lines by checking if returned result in Register AL is a 1, or a 0.
How does it know what line number to return to when job is finished ? Before Call to
separate list, the ( line number := Instruction Pointer := IP Register ) is saved by pushing it
onto the stack.
What is the stack ? It is a separate segment of memory for storing stuff, like a stack of papers
on your desk. L.I.F.O is last one in, first one out, or only take items off top of stack. No shuffling the
stack.
Before the Call, Variables, Constants, Offsets, or Numbers needed by the Procedure, or Function are
pushed onto the Stack. Variables can also be passed to the called Function in the Registers.
The Function saves Registers used at top of list by push onto stack, and can access Variables on the
Stack by using the Base Pointer Register [ BP ] and [ SP ] = Stack Pointer Register.
After job is done before Return the saved Registers used by the Function, or Procedure are popped off
the Stack, and restored.
When last instruction in the list ( Ret, short for Return ) is executed the IP := or line number
is popped off the stack, and returns to line below where it was called. Click : more information
Opcodes contain Hexadecimal numbers, some are basic numerical numbers, or values, some are
keyboard characters as #13 is the Carriage Return, or the Enter Key, #27 is the Escape Key.
Machine Code : Opcodes are also Instructions with each number representing a Instruction +
value, or what the instruction works on.
Hex number 74 is a Instruction : number 74 is jz ( Jump if Zero ) to line number = count of bytes, or
offset to line. Second part of Instruction is number of bytes to jump. Click : more information
All Operating systems, Computers only understand Machine Code : Numbered Instruction
Opcodes, and it doesn't matter if File is a Executable .exe, or dynamic link library .dll
x86, x64 Assembly Language provides a English Name for the Instruction Opcode, but Net
Assembly uses Opcodes with different numbers, and Instructions.
Opcodes are used in Dynamic Link Library .dll Files that contain the same Code as .exe Files
with Library Functions provided by Language used, and Windows System to be called by Executable
Files.
ALL FILES CAN BE OPENED with a Hex Editor. Files containing Opcodes .exe and .dll can be
opened in a Debugger. IDA opens Mac, Linux, Net, and even opens code used by Electronic Chips.
The CFF Explorer program ... DOWNLOAD link provided, also opens .dll and .exe Files. After
Install, Right click on a file, and open with CFF Explorer. See CFF Explorer image.
How to Patch :
The majority of
cracks are done by changing a jump after acmp,
or test Instructions. There are 2 types of jump instructions,
the 2 byte jump Instruction is a short jump less than 128 bytes.
There's that magic hex number again. The Far Jump is a 6 byte
jump with the 1st 2 bytes being the Instruction, and the
last 4 bytes being the number of bytes to jump.
The Debugger was created as a Tool, using Assembly to find Bugs in any Program, any operating
System, and the Number 1 Tool used by Crackers to find Code to change to Crack Programs !
TUTORIAL : Step by Step how to : Use a Debugger - your choice, how to go about finding
Code to change, how to change, and save changes to create a Crack !
I have used many different Debuggers, but IDA Pro is my preferred choice. I recently used IDA as it
was originally intended to find the Color Bug in ToonBoom Harmony 16 Crack.
IDA disassembles & Debugs many Files : .exe, .dll, etc, many operating systems, Windows, Dos, Mac,
Linux, Android, Nintendo, Sony Playstation, Electronic Chips, SNES ROM, Motorola, MOS Technology.
Currently using IDA v7, but v7 has a BUG as Hex Code Window is not
synchronized with Main IDA-View-A Assembly Code Window as it is
in IDA v6.8, beginners should start with v6.8
Lets get cracking : If you have a understanding of basics covered then you are ready
for Easy to Learn Part : Learn by doing, Cause and Effect, by watching Program Run 1 line at a
time.
Debugger runs Instruction List : 1 Line at time := F7, or jumps over Calls := F8, or Run
until it hits Break-point Set by User := F9, Run to cursor := F4, Ctrl + F7 =: break on Ret.
Press semicolon ; key in IDA to label Procedures as to Job : Checks License, Imports called, or
data variables referenced. Label references are seen throughout program so Label the Labels.
Label the calls that calls the call that Calls the Check Serial, or Check License function. Data
labelsalso work great for data variables as you can see where it is jumping before the jump.
SEARCH for [ text ] strings : Serial, Activation, License, using [ Find all occurrences ] Data &
Code. Click to jump to item, and Right Click [ add Break-point ] to break when run.
WHAT DOES THAT GUY DO FOR A LIVING ? Before running program in debugger
create familiar landmarks by labeling Procedures, Functions, and set breakpoints.
Top of Procedures [ sub_ proc near ; CODE XREF: sub_ ] Click ; Semicolon, Enter Name for
Procedures like [ "CHECK SERIAL" ] Click [ CODE XREF: ] Called by Reference, andgo to those
Procedures.
At the top of that Procedure for Call to "CHECK SERIAL" Click ; Semicolon key, and enter
Label ["CALLS CHECK SERIAL" ] repeat the process, and [ add Break-points ] at each Location.
By creating Landmarks for the maze of Procedures, you will see familiar Labels as you run the
code in Debugger. Important code locations : conditional jumps can be labeled as yes, or no = didn't
jump.
At cmp before jump : Create comments as to value of register, or variables value [ =1 YES it
jumps, or =0 NO ] Label jumps of interest that jump, as you may go through dozens of no jumps
before a jump.
This will give you insight into what the program is going to do the next time you run
through the code.
PLAN AHEAD : Before starting, consider type of program, and what you are looking for. If Trial then
it will open a File, or check a Registry key for Trial expired date before starting, or put up Activation
Box.
Trial Expired : Program opens File, or checks Windows Registry . Click Imports menu :
Search for File Open, Read, and Seek Functions, Click XREF: go to Calling Function, Label & add
Breakpoints.
Search for Registry Functions : RegQueryValue, RegCreateKey, RegSetValue, SHDeleteKeyW,
RegCloseKey, Click References, go to Calling Functions, Label as "Check Trial Expired", and set
Breakpoints.
NOT FOUND : What else can I do to break ? Search imports for Network Functions,
or http: Links, If it checks with their Web Site. Place Breakpoints on Menu, and Msg Box
Functions, Hash Functions.
Still not found : Click Debugger/Debugger Options, set Break on Start, or Tread start/exit, Library
Load/unload, Debug message, or Click [ Exports ] set a Main Function Break, and use F8 to step the
Code.
To Find a deliberate Exit, or a Time Bomb : Search Imports for Exit, or Quit Functions, Click on
Reference, add Break. Search for Library Event setup Functions, or do a partial search of Time Value
in Hex.
The only way to crack Buildbox's memory CRC crack protection was to re-write the Library Core Timer
Event Function. When a 2 minute Timer Event was requested, it was changed to FFFFFFFEh
:= 14days.
Events can be a bitch, because they run behind your back . C++ Quick Time Library, events
are handled by Core.dll, and best way to break out in Calling Function is by using Ctrl + F7 to break
on Return.
Events are set while Initializing by using offsets to Subs & Functions. Click on Sub Offsets being setup
to go to the Sub, and set break-points, and add Labels. Getting way too far ahead for BEGINNERS.
IS CODE TO CRACK IN .EXE OR .DLL ? To find Code : Follow the Code in the Debugger !
To step into a .dll use the F7 Key. IDA provides a [ Module - .dll ] Window on Right near Bottom.
The .dll has not been Analyzed, and some code may be scrambled, Select scrambled Code, and Right
Click : Select Analyze Code, or QUIT, Start IDA : Load the .dll, and Debug the .dll
To Debug a .DLL : Click [ Debugger ], and Click [ Process Options ]. Select Executable .exe that
starts the Program. Start Process := F9, or Start Program, Click Debugger, and Click Attach to
Process.
LANGUAGE ISSUE : Translator needed ! COMPILER was the Translator when it took
the Programmers Instruction List, and converted it to Opcodes, and Assembly is the interpretation of
those Opcodes.
If Check Serial's real Name is Good_Serial , and Original Instruction is
: If Good_Serial thenmessage Thank you
" ", and set Is_Pro to True, Else show message
"Invalid Seria l" and set Is_Pro to False.
Another Guy in Program may ask : If Is_Pro then do this else do that. Maybe they just
ask : If Good_Serial to answer Yes or No . The cmp, test, or, and conditional jumps are
the if, then elsedecision makers.
DECISIONS, DECISIONS, DECISIONS : The Path not taken . Searches may have found
Thank you for purchasing Invalid Serial
messages like " " or " " where Labels, and Breakpoints
were created.
TheKey to cracking the program is taking the right Path at the Decision points by changing
Thank you for purchasing
code, and we definitely want to change the Code to go to " ".
TO GO THERE, OR NOT TO GO THERE ? That is the Question ! IDA displays Arrow, on left at
jumps to Location, to not jump : move cursor to desired Location, Right Click to
change IP := Instruction Pointer.
To go to code at another location, or change data, or variable : Click on it [ make sure Hex view is in
Sync with IDA code View ] To return to Current IP: click on IP Register in Registry Window, and select
jump.
CAUSE and EFFECT : Let it run the 1st Time : watch where it goes, messages displayed. Only
inareas of Interest : Create Labels : at Jumps - cmp - test : List what's in Registe, = 0 Yes, =1 no it
didn't jump.
Insight into what it will do next time it's run . Tochange path taken : change IP Register, or
Click on Registry Window, and change Register value, and watch Path, and messages displayed.
didn
WINDOWS : IDA VIEW-A : Assembly View for Debug . JUMP MENU : Enter address. Hex View-
1 : Right Click select synchronize with IDA VIEW-A Columns Select 32, Right Click to Select Edit.
Debugger/Breakpoints/BreakpointList := View/enable/Disable ... Data/Stack/memory
Breakpoints sometimes cause problems as Stack memory is popped, re-assigned & used by another
Procedure.
Search : Text Search : frequently used, Tick Find all occurrences box. Sequential byte search is
very fast, need spaces in Hex String. Partial Hex Pattern Found V7 Patch code in V11 quickly.
Imports : [ Library .dll's & Windows .dll's ] ... Spriter uses QT5 Library. EXPORTS : .exe very
little, lots for .dll's. FUNCTIONS Window : Search by NAME in programs with Debug Information.
DEBUG WINDOWS : Change on Run . Resize to View : IDA View-EIP, Output, Registers, and Hex
View-1 : Right Click select synchronize with IDA VIEW-A Columns Select 32, Select EIP Register.
Register Window : Registers can be zeroed, value changed, or Right Click Register with offset, and
select Jump. Right Clip IP Register to jump back. Mouse Pointer over a Register Displays value in
Register.
Patch Hex Window : Right Click on Hex code in Hex View-1 to change code synchronized with IDA
View-EIP, Edit, Right Click, Select Apply changes, and watch Instruction change in IDA View-EIP.
Output Window : Very useful. Displays Search Results, etc. In Debug Run Mode displays Debug
Information Messages, Loading messages as to Loading of .dll's, and Error messages.
Assemble Window : Click Edit /Patch Program/Assemble : Enter, or Edit Instruction.
To Create or change Jumps. 1st Create Label by selecting Location, Right Click &
select Rename.
Apply Patches to File : Click Edit/Patch Program/Apply patches to input file ... SAVE THE
CRACK !
PREPARE & SAVE : Save Debug information ... create a text File Named
: DEBUG_Spriter_v11.txt : Select and Copy Function Patched Assembly code from start to Ret into
the text file.
Copy 32 bit Hex String starting at Patch Position, Paste under Instruction Patched 3 Times : Top
Line := Original Hex, 2nd Line spaces removed for Search in Hex Editor, 3rd Line := New Patched Hex
Code.
Save File for Future Reference Next version
... . Add Reference section at bottom, copy paste
Functions used to Find. IDA Database can be saved for Future use for hard to Crack Programs.
Click OK at 1st loading box unless you are loading a packed file. If packed then uncheck
imports as they will need to be fixed.
Unknown Exception : Click Ok. Exception Handling : Click [ Change exception
definition ], uncheck Suspend program, Change Warn to Silent, do not warn, Click OK & Click
YES (pass to app).
Exceptions are common to loading, and starting, and all you need to do is [ CLICK
OK := YES ] - Pass it to the Application, don't bother me.
Hex Numbers changed to prevent jumping over instruction in list that needed to be run. The
Instruction at IDA : Line Number 004F4049 ( mov bl, 1 ) needs to run to move a 1 to
Register BL,
because Register BL is moved to Register AL at end of Function, before the Function Return. THE
FUNCTION NOW RETURNS 1 IN REGISTER AL := GOOD SERIAL !
HOW TO PATCH : Save a backup. PATCH in IDA, or use a HEX EDITOR, and see if it works ...
Place cursor on the 74 17 - change the 17 to 00, and Place cursor on the 74 04, and change
the 04 to 00 ... Click on save, or save as.
IDA : Patch Hex Window : Right Click, Select Edit : Instruction length is High-lighted : Do not
exceed. If shorter add a nop := 90
IDA : Assemble Window : Click Edit /Patch Program/Assemble : Enter, or Edit Instruction.
IDA : Apply Patches to File : Click Edit/Patch Program/Apply patches to input file ... SAVE
THE CRACK !
Congratulations, you just cracked a program by changing 2 bytes, and did a successful
Crack update !
Math code done on Serial is basic code seen regularly, used in most Programs, and can be used to
create a KEYGEN.
Do you know how the code is doing Math on the Serial, and Email ?? Can you explain How to
create a KEYGEN from this Code ??
The program can be cracked in many ways, and even used to create a simple KEYGEN ! Explore
the many different ways this program can be cracked !
Can you find Answers to the Questions ?? Video provides information needed
for many Answers, but Questions remain !
Can you find the key to solve the puzzle to enable
Super Secret Mode, and finish the Crack Me ??
Dozens of pop up clues included in Video for the dozens of
different ways the Crack me can be cracked ...
Test is to finish the Crack me, and enable Super Secret
Mode !
UPDATE : WORKING ON THE VIDEO - MAKING - EDITING - ADDING MUSIC - ETC - THIS WILL TAKE A LITTLE TIME !
IF YOU NOTICE THE TUTORIAL BEING SCRAMBLED : IT'S BECAUSE I'M CAPTURING IMAGES OF TUTORIAL TO INCLUDE
IN VIDEO !
More to come !