Great thread, just a bit of insight for those who may be attempting to do it themself.
To null a plugin/theme/program what you need to do is reverse engineer the licensing mechanism. So as you've seen in the first post, Fest first locates where yoast does its check to see if you are a premium user or not.
In this case,
PHP:
$license_status = $this->get_option( 'status' );
return trim( $license_status );
That line checks to see if the license status is valid or invalid, the returns the result. The returned result then determines what you can do or can't do.
Simply ensuring that you return 'valid' all the time will allow you to have access to premium features as the coding now ensures that your license status is 'valid'.
For plugins which require update or interact with a server, this might be a bit harder. Some plugins will require you have a paid version to see what information a server will respond with so you can create a small emulation.
Example from Fest once again
PHP:
$raw_response = wp_remote_get( ‘https://api.envato.com/v3/market/author/sale?code=’ . $tf_purchase_code, $prepare_request );
if ( ! is_wp_error( $raw_response ) ) {
$response = wp_remote_retrieve_body( $raw_response );
$response = json_decode( $response, true );
}
Rehub checks with envato to see if you have a valid purchase code. If you do, envato will prepare an appropriate response with license details allowing you to use the plugin. This information is stored in the variable
"$response".
To null this, you would need to actually have a valid license(to make it easy). You would have to intercept the response that envato sends when the plugin makes that http request. Easiest way to see the response? Open chrome, open developer mode, go to the networks tab, the navigate to the url with a valid purchase code. You would then get the json response indicating what a valid license look like.
In the plugin, you would place code to simply emulate that response. As is seen here:
PHP:
$response = array();
$response['buyer'] = $tf_username;
$response['supported_until'] = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Regarding updates and information directly from servers, you cannot circumvent this, as it requires you to ask the person for the item. Meaning, if we have a secret club which has a special book that we add 1 page to each week, you may be able to steal a book but if you ever want the new page, you'll have to come directly to the secret club to ask for the update. We will notice that your book is a stolen copy and we will deny you the new update.
Hope it helps someone.. Anyone