How to Null and Activate Premium WordPress Themes and Plugins [Valuable info]

  • Thread starter Thread starter Deleted member 752298
  • Start date Start date
Sure! The plugins will definitely run without some of these changes, but I don't like to do half-done work (yeah, I'm a bit of a maniac).

For example, the de-activator function below does not necessarily need to be modified for the nulling job, but this will avoid a call to the licensing server, hence, less time wasted, and fewer resources used. Of these modifications, some are essential for the job and some are just complimentary. Also, the line numbers are "near" that line number. Sometimes one or two lines before or one or two lines after.

ADD-ON: Shortcodes Ultimate Extra v1.8.2 (6 files modified):

FILE1:
shortcodes-ultimate-extra\includes\class-shortcodes-ultimate-extra-deactivator.php
LINE: #29
DONE:
(avoid licensing server calls for a license that is fake but we all know is valid, lol)
Code:
changed
private static function deactivate_license_key() { return; //#######

To:
private static function deactivate_license_key() { return;

FILE2: shortcodes-ultimate-extra\includes\class-shortcodes-ultimate-extra-activator.php
LINE: #33
DONE:
(this is the value for the fake license key)
Code:
changed
'value'    => '',

To:
'value'    => 'L12345678',

FILE3: shortcodes-ultimate-extra\admin\partials\settings\fields\license-key.php
LINE: #3
DONE:

(just entered the fake license key value as a placeholder for the form)
Code:
changed
<input type="text" name="<?php echo esc_attr( $data['id'] ); ?>" id="<?php echo esc_attr( $data['id'] ); ?>" value="" class="regular-text" placeholder="XXXX-XXXX-XXXX-XXXX" data-key="<?php echo esc_attr( get_option( $data['id'], '' ) ); ?>" data-key-masked="<?php echo esc_attr( $this->mask_license_key( get_option( $data['id'], '' ) ) ); ?>">

To:
<input type="text" name="<?php echo esc_attr( $data['id'] ); ?>" id="<?php echo esc_attr( $data['id'] ); ?>" value="L12345678" class="regular-text" placeholder="XXXX-XXXX-XXXX-XXXX" data-key="<?php echo esc_attr( get_option( $data['id'], '' ) ); ?>" data-key-masked="<?php echo esc_attr( $this->mask_license_key( get_option( $data['id'], '' ) ) ); ?>">

FILE4: shortcodes-ultimate-extra\admin\class-shortcodes-ultimate-extra-settings.php
LINE: #250
DONE:
(inserted fake license key)
Code:
changed
public function sanitize_license_key( $value ) {

To:
public function sanitize_license_key( $value ) { return 'L12345678';

LINE: #334
DONE:
(forced the "all ok" code when checking license)
Code:
changed
private function remote_activate_license_key( $key ) {

To:
private function remote_activate_license_key( $key ) { return 'activated-202';

LINE: #373
DONE:
(forced the "all ok" code when checking license)
Code:
changed
private function remote_deactivate_license_key( $key ) {

To:
private function remote_deactivate_license_key( $key ) { return 'deactivated-202';

LINE: #413
DONE:
(made fake license valid (of course it is valid xD) )
Code:
changed
private function is_valid_license_key( $key ) {

To:
private function is_valid_license_key( $key ) { return true;

LINE #456
DONE:
(show fake license without mask (asterisks) )
Code:
changed
public function mask_license_key( $value ) {

To:
public function mask_license_key( $value ) { return $value;

FILE5: shortcodes-ultimate-extra\admin\class-shortcodes-ultimate-addon-updater.php
LINE: #28
DONE:
(returns a blank address so an update is not downloaded (if downloaded, nulling job will be overwritten))
Code:
changed
public function validate_license_before_updating( $update ) {

To:
public function validate_license_before_updating( $update ) { return '';

LINE: #70
DONE:
(force logic to "true" about the license being valid and activated)
Code:
changed
private function is_license_activated() {

To:
private function is_license_activated() { return true;

FILE6: shortcodes-ultimate-extra\admin\class-shortcodes-ultimate-addon-license-notice.php
LINE: #103
DONE:
(force logic to "true" about the license being valid and activated)
Code:
changed
private function is_license_activated() {

To:
private function is_license_activated() { return true;

---

All three Add-Ons are similar, so it will be repetitive to put the process done to the other two. Basically, the functions we are looking to modify in these Add-ons are:

-is_valid_license_key()
-is_license_activated()
-remote_activate_license_key()
-remote_deactivate_license_key()
-deactivate_license_key()

Also, if you check the modified files, you will see a "//#######" (double forward-slash with 7 hash or "pound" signs). The double forward slash is one of the PHP's comment symbols, which means that everything after the "//" is ignored in PHP. I just use it to keep track of the changes I make.

Cheers!
 
Sorry, file #1 should be:

Code:
Changed from:
private static function deactivate_license_key() {

To:
private static function deactivate_license_key() { return;
 
Hey guys!

I love to contribute to BHW and I would like to share some handy lines of code to make it more easier to activate premium WordPress themes and plugins. To start with, I'd like to share how to null Yoast Premium plugins:

How to Activate Yoast Premium plugins:

Step 1:


Find the following file using a FTP client, such as FileZilla:

wordpress-seo-premium/vendor/yoast/license-manager/class-license-manager.php,

Step 2:

Find the function get_license_status() at line 327:

Code:
public function get_license_status() {
$license_status = $this->get_option( 'status' );
return trim( $license_status );
}

Step 3:

In line 330, change:

Code:
return trim( $license_status );

to:

Code:
return 'valid';

Et voilà: your Yoast Premium plugins will work. :)

More plugins and themes will follow soon.

Stay tuned.
Does this method still work? Would I need to have a copy of the premium plugin first?
 
Does this method still work? Would I need to have a copy of the premium plugin first?

Yes, if you need help with a plugin you would need to first provide a copy of it so others can help you null it.

As for the "method", there is no specific method. Unless your plugin has already been discussed and solved on this thread, each plugin is different, and such is the code to be modified.

Hope this helps.
 
Yes, if you need help with a plugin you would need to first provide a copy of it so others can help you null it.

So I need to have the .rar file of premium version or the one from wordpress repository https://wordpress.org/plugins/wordpress-seo/ ?

Always wondered, if people are trying to get plugins or themes nulled, how will they get hold of the original file without paying first? Because without the original file, you won't be able to null right?
 
So I need to have the .rar file of premium version or the one from wordpress repository https://wordpress.org/plugins/wordpress-seo/ ?

Always wondered, if people are trying to get plugins or themes nulled, how will they get hold of the original file without paying first? Because without the original file, you won't be able to null right?

Yes, the premium version is the one needed.

Examples of how they get hold of premium plugins;

(1) They buy it but need to null it in order to use it on multiple websites without paying the extra licenses (completely legal as the GPL license rules)
(2) They get it from a repository where many contribute with the premium version so it can be nulled by someone so everybody with access to the website benefits from it (this website has had that scenario).
(3) They manage projects where a customer pays for the needed plugin and again, the project manager wants to be able to use it on more websites or projects for other customers
(4) They do group buys and want to null the plugin so everyone in the group benefits
(5) many, many other ways and scenarios.

In the end, someone always pays for the first copy and provides future updates. All the rest benefit from it.

Guys, if you are looking to learn how a specific plugin is nulled or at least want to see the differences made for nulling it, you will need:

1. A copy of the original plugin
2. A copy of the nulled version.
3. Use a comparison tool like WinMerge (winmerge.org), which is FREE Windows software to compare and/or merge differences between files.

A little bit of PHP programming knowledge will come handy to better understand what the changes do. PHP is simple. It is just a bunch of functions that you can call, either included in PHP core or custom, each one for a specific purpose. They have data input and output. The functions in PHP are equivalent to the GOSUB (Go SUBroutine) in BASIC, in case you have had any experience with that old-school programming language (I certainly had, since I was 14, lol).

Every time I share a nulled version of a plugin, I encourage you to do a comparison (if the original version is available, that is) so you have an idea of what is being done.

This way, when you get it nulled from other sources, you may be able to see if a malicious modification is been done to it.

I always use two software titles, "Beyond Compare" (similar to "WinMerge" but paid), and "Advanced Find and Replace" (also paid) which allows me to look for specific text in the whole plugin, including directories (folders) and sub-directories (sub-folders).

Just saying

1701377146260.png
 
@zilog357 (or anyone) could you please help me null the plugin "Booknetic SaaS"? I'm talking about the extended license one, but i'm pretty sure it has the same protection as the regular license one right?
Actually, I want to buy it + its addons, but it's so expensive (489$ just for the extended license + as much for the addons... so yeah between 900 and 1000$!!!) that for that crazy expensive price, I'd like to use it on more than one website (because the extended license = just one website for that crazy price when 99% of plugins for Wordpress for half that price offer you unlimited + lifetime), that's why i'd need to bypass the license/purchase code (and the email check too) check so it can unlock fully the plugin and that I can use it on as many sites I want if I want. I didn't buy the plugin yet (though i have the legit booknetic regular license) because I'd like to be sure first that it can be nulled before spending that much money, but as it's just a license difference (regular vs extended) + 2-3 difference of features, i'm pretty sure it would be the same way to null it as it is to null Booknetic regular.
I tried to upload the zip here but it says it's too large so I jsut created a zip with al lthe filed that included the words "purchase_code".
Thanks in advance
 

Attachments

@zilog357 (or anyone) could you please help me null the plugin "Booknetic SaaS"? I'm talking about the extended license one, but i'm pretty sure it has the same protection as the regular license one right?
Actually, I want to buy it + its addons, but it's so expensive (489$ just for the extended license + as much for the addons... so yeah between 900 and 1000$!!!) that for that crazy expensive price, I'd like to use it on more than one website (because the extended license = just one website for that crazy price when 99% of plugins for Wordpress for half that price offer you unlimited + lifetime), that's why i'd need to bypass the license/purchase code (and the email check too) check so it can unlock fully the plugin and that I can use it on as many sites I want if I want. I didn't buy the plugin yet (though i have the legit booknetic regular license) because I'd like to be sure first that it can be nulled before spending that much money, but as it's just a license difference (regular vs extended) + 2-3 difference of features, i'm pretty sure it would be the same way to null it as it is to null Booknetic regular.
I tried to upload the zip here but it says it's too large so I jsut created a zip with al lthe filed that included the words "purchase_code".
Thanks in advance


You may upload the thing to a file-sharing site like Nitroflare (free) and post the download link here and the VirusTotal link.

Please understand that:

1. This, as most plugins are, is made in an Object Oriented Programming (OOP) fashion, and some functions and methods inside the different classes are not included in this download, and there is no way I can know what some functions are meant for.

For example, the file that generates the "activation token" (AjaxHelper.php). Without the whole plugin I don't know if it is going to be checked within the plugin or against a licensing server and neither if it is to be used for content over an API (non-hackable) or local content (hackable).

2. With those few files alone, I am already seeing several calls to an API (Application Programming Interface), even for getting some content like an "installation menu". This makes me think that we might hit a wall further in the nulling process if part of the essential content is only available through an API.

3. This is a rather complex plugin. Even if you make the whole plugin available, it may take some time to crack if I decide to do so and in the case that it can be cracked.


Curious note

On a side note, always distrust the word "help". When the police say "let me help you" it usually means "make it easy for me to f*ck you up the best way possible". The same with the plugins. The "helper" is always to help the developer, not you. If there is a helper in a plugin (like this one) is for locking it up if the license is not good.
 
Yes, you're right there's API calls, I saw for example something like booknetic.com/api/api.php/download=blablabla&purchase_code=XXXXXXXXX in a table in my PhpMyAdmin

Download : https://www.sendspace.com/file/cnwhqt
VirusTotal : https://www.virustotal.com/gui/file/06a24059a1d0756bf6e2be90f91095c61a3627f76872aed0e5385dbd5f90f831/detection

There's so many references to "isSaaSVersion" in this plugin that i suspect that regular and saas version are the same one and that the saas feature are activated only if the purchase code is associated to a saas version maybe
 
There's so many references to "isSaaSVersion" in this plugin that i suspect that regular and saas version are the same one and that the saas feature are activated only if the purchase code is associated to a saas version maybe

I haven't had the time to look at it but there are two main cases about htat:

1. Many of the plugins I have seen with that behavior use a variable or constant to keep track of if it is the "Pro" or "Free" version, the "Saas" or no "Saas" version, the "single user" or "multi-user" version, etc.

This is because the functions used in both versions are the same. Keeping a variable or constant that allows the function to distinguish between two different versions will allow those functions to do the right job, depending on the version.

In short, many of those plugins do not include everything in two different versions. It is just that they share the same functions. It makes sense to do it that way so the developer does not need to reinvent the wheel for each version.

2. In the case where the difference in the price of a plugin is only for the time the user is subscribed, then all is the same. There is no difference in how any of the subscriptions behave. Only the time that it lasts (1 year, 5 years, unlimited, etc.). They rely on the plugin to call the server to check if it is expired or not. Hacking those is extremely easy.


I'm afraid that your case could be #1 above because the different versions of the plugin provide completely different functionalities.

However, this is an opinion based on my experience. The facts can only be known by studying the plugin.
 
Also, if you check the modified files, you will see a "//#######" (double forward-slash with 7 hash or "pound" signs). The double forward slash is one of the PHP's comment symbols, which means that everything after the "//" is ignored in PHP. I just use it to keep track of the changes I make.

Cheers!
thank you! learned a ton - - should learn more php I guess :)
 
I haven't had the time to look at it but there are two main cases about htat:

1. Many of the plugins I have seen with that behavior use a variable or constant to keep track of if it is the "Pro" or "Free" version, the "Saas" or no "Saas" version, the "single user" or "multi-user" version, etc.

This is because the functions used in both versions are the same. Keeping a variable or constant that allows the function to distinguish between two different versions will allow those functions to do the right job, depending on the version.

In short, many of those plugins do not include everything in two different versions. It is just that they share the same functions. It makes sense to do it that way so the developer does not need to reinvent the wheel for each version.

2. In the case where the difference in the price of a plugin is only for the time the user is subscribed, then all is the same. There is no difference in how any of the subscriptions behave. Only the time that it lasts (1 year, 5 years, unlimited, etc.). They rely on the plugin to call the server to check if it is expired or not. Hacking those is extremely easy.


I'm afraid that your case could be #1 above because the different versions of the plugin provide completely different functionalities.

However, this is an opinion based on my experience. The facts can only be known by studying the plugin.
Thanks for the insights. As far as there's a way to null these plugins (if the regular version can be nulled, the saas version could be nulled the same way for sure right? but it's calling an API so as oyu said, it's unlikely to be possible to null i'm afraid) so that if i buy the crazy expensive Saas version (489$ + 500$ of addons!!!) instead of being limited to just one site I can use it on how many sites I wasn't, that's what matters. Because at the current price for jsut one site, thats just crazy, that's twice the price of lifetime/unlimited plugins. Especially that when checking the license, it's said to be under GPL licensing so...

And the difference between regular and saas version is that with saas you have a slightly different backend and every tenant can have there own URL (it's like a multisite feature built in) + you can create package to make they pay for using the plugin + you can take a commission on the sales via stripe connect I think. I think that's the only difference.
 
I believe so, but I will need the theme to make sure.

Post the download link of the version you are interested in, and I will check if it can be nulled.
 
Here are the links for the official website and the free version:

Code:
https://generatepress.com/
https://wordpress.org/themes/generatepress/
 
Back
Top