by José Paiva
TL;DR: In this article I talk about how I used my personal android phone to make around 5$ per day (without doing anything), using a single app.
What does Passive Income mean?
> It can be defined as: “money you collect from activities, where you have no active or direct involvement.”
For me, personally, it was always about taking advantage of my knowledge to think outside the box and make money. How could I, as a Software Engineer make money with what I had learned at the time (preferably without actually “having to do anything”).
I know, **catchy **right?
The year is 2019. I was still in university, crawling through my 3rd year of a Bachelors degree in Computer Science. At the same time, I was also doing an internship at a Marketing Automation Company, which means that I had fewer classes than all the other previous semesters, hence more time than usual to put my knowledge into practice.
I’ve used computers from a very young age (and too much, to be frank). Nonetheless, regarding software development, all the knowledge I had was related to low level languages (C, Assembly), high level languages (Java, C#), building/designing web applications and some knowledge in computer networking. Oh, and obviously from all those years, a lot of “google searching” skills 😏.
That’s to say, I had no prior experience with mobile applications or Android applications in general.
If you google “How to make Money as a Software Developer” the top results are one of the following options:
a) Get a Job
b) Freelancing
c) Becoming an online teacher
As I mentioned, I was doing college + an internship. Getting a job was not really an option. Freelancing could be possible (but I wasn’t “Free” 😆). Becoming an online teacher was also an alternative, but it would take a lot of my time. Besides, I wanted Passive Income and having to work for it for a long period of time is the opposite direction of that.
So, a quick change of scenery — ”How to make Passive Income as a Software Developer” — , yield the following results:
a) Making your own application and sell it
b) Blogging
c) Chatbots
These are great ideas and all if, as I previously mentioned, you have time to spare. Plus, it takes a really long time for it to actually start generating profit.
No, no… there must be another way… a faster way.
In the previous years, I had heard from a friend that, a lot of apps claim to pay you money simply by watching ads. Imagine, every time you are watching a video on YouTube, browsing a News website or even watching stories on Instagram, and an ad pops up… BAM… you earn 0,05$ (despite you being forced to watch it against your will).
Their idea is simple. You do watch ads. Only instead of the company keeping all the revenue for themselves, you also get a cut for “helping” them out. And you say:
> “Well. If it’s that simple. Why don’t you just create your own app, fill it with ads and use it yourself to make money? Are you a chicken 🐔? ”
Well… the problem, of course, is that: is not that simple. From my research, at the time, apps that didn’t have a “real” purpose and would only “show ads” (and not do anything else really), after a certain period of time, stopped generating money for the developers who made these apps. And since they would stop receiving the money 💰, they would also stop paying to whoever uses their app.
The thing is: ads are limited. A single “user” can only see too many. If they are abused (for instance, among other factors, watched to many times from the same device), the developer of the app does not receive any money after a period of time. Which makes sense right? 🤔
I did however find apps that followed the purposeless way. By having a simple app with a single button: you would click it; watch an ad; get some sort of points; you would then redeem those points for money; and voilà. Next day, you would get the money.
Click Cash — Example of an Android App that would pay per ad click
After trying with a few apps (ones that indeed payed me through PayPal and, of course, others that didn’t), I realized that I just needed to find the right app. An app not like these ones, because these eventually end up dying 💀. And finally, I would make some sort of automation simulating a “normal user behavior”, in order to generate a Passive Income for myself.
And so I went on a quest… I had an idea, I just needed to find the right app to throw my idea at. And I found it!
This one however, had a different/interesting approach. This one also made money from ads (presumably), and similarly would give out coins by playing a simple game of Math (that is, if you won the game).
> “Math?”
Yep, that’s right. Math. You would play against other people on a 1v1 match (with a duration of 1 minute) and whoever could answer 20 math problems faster would win 4 points. There were also other game modes, but I’ll stick to this one throughout the article.
After gathering enough points you could exchange them for **$real$money$ **(e.g.: 5000 points would be 5$). Only, there’s a catch. I know, surprising right?
In order to play a 1v1 game you would need to spend what they called “tickets”. And in order to win those said “tickets”, you would need to win games. A vicious cycle indeed. On top of that, remember what I said previously about ads? The developer still needs to eat. So, after a game is finished, you would have a very interesting ad ☁️ waiting for you on the other side (with a duration of **over 30 seconds **most of the times and a button to close it that can only be seen through a microscope).
Nonetheless, I didn’t let that stop me. Oh, no sir!
> “There must be a way to make at least some money from this.”
After thinking about it for a bit and doing some calculations, I figured something out, which I will explain with the fluxogram below:
Simple fluxogram detailing “The Plan”
Looking at the diagram above, if I spent 1 hour playing (60 minutes, which is the equivalent to 60 games), I would make 4 times the amount I spent. So, per 60 games, 60 x 4 = 240 coins. Then I would need to buy more tickets. So, 240 - 100 = 140 coins. This means a total of: 140 coins per hour.
Since I needed 5000 coins to withdraw 5$ (minimum required), I would need a total of 5000 / 140 = 35 hours (or a day and a half) to make this amount. And you must be thinking to yourself:
> “Only 5$ for 35 hours of playing the game, in a row? What about the ads? That also takes time! You didn’t even consider it… Are you dumb?”
Wait, wait, hear me out… 😅
Two things. About the ads, you’ll understand how I dealt with them when I talk about this in The Tools section. Regarding the second thing, well… you see, there was also a daily leaderboard for which the person with the highest number of won games (1st place) would also win extra coins.
And… of course, that was going to be me! 😏
For this plan to work, I only needed 2 particular tools. Firstly, as I previously said, ads take a long time (30 seconds between each game), which would make it so, the 35 hours would turn into 52 hours, roughly. So I had multiple options:
1) decompile the app, get rid of the ads and recompile it again;
2) every time a game ends I restart the app;
3) using an ad blocker.
An ad blocker it is then.
Secondly, I would need to make a bot in order to do all the steps I’ve described in the fluxogram, without having to actually play those games (I may be good at Math, but I’m not that fast; and also, I wanted to make sure I got those 4 coins every time).
Fortunately this app didn’t have an ad-blocker detector. So I could use a tool like Blokada to block all incoming ads and play games over and over… without having to watch a single ad. In a nutshell, this app works like a VPN, which makes it so, every time a request leaves the app:
This is by far the best tool I could’ve have found to make Android bots. It is free, it has no ads, it has a beautiful supportive community, very well structured documentation and has a huge toolkit/variability of configurations to play with. I look like a total fanboy at this point. Anyway, this is where I started to make my automation.
Unfortunately, I no longer have the original flow I created back then 😢. I’ll try my best to explain the “blocks” I used, in order to perform this automation. Take a look at the image below:
Blocks of the Automate App
Every bot or “flow” starts with a “block” named “Flow beginning”. Then, you have multiple other blocks to choose from, each one with specific properties, depending on what you are trying to achieve. But sticking to the ones I used the most, I’ll describe each one individually: App Start, Interact, Variable Set and For Each.
Android apps are composed by “Activities” and the App Start allows it so you can start an app on a specific activity. So imagine that the screen/window of a 1v1 match game is called “1v1Activity”, but when you open the app you have to go through “MainActivity” first. With this block, you can open a specific activity directly and start the bot from there.
Next, THE most important block is Interact. As the name suggests this is what is used to “interact” with the user interface 🤓. For instance, when a new problem appears like so:
1v1 Duel on the Math Cash App
We can select the numbers “54” and “49”, and use the Variable Set to store the result. The cool part about the Interact block is that, it provides a tool to inspect all elements in the interface and returns the XPath to the element, so that you can inspect or click it.
Finally, with the **For Each **block, I could iterate through the result (in this case 54 + 49 = 103) and click the buttons “1”, “0”, “3” and “Enter”, by using the Interact block again.
It’s that simple!
If you don’t understand it, don’t worry, the best part comes next 😄.
Now that I had the bot ready, it was time for me to test it. Funny thing I forgot to tell you: this app also came with a “Practise Mode”, which required no tickets to play. How funny is that? Right? Right? Well… if you don’t get the irony in that, allow me to explain!
You see, in order for me to test the bot, if this mode didn’t exist, I had to spend my tickets (so I could play a game). The problem is that, for us programmers, rarely anything works on a first try. As a consequence, I would waste all my tickets just trying to get the bot to work. However, with this, I had a staging environment 🎪!
“Ok, but how much money did you actually made though?”
Before I tell you how much money I did make, let me first tell you, in the end, it worked like a charm! And it felt so good when it did 😍.
I would: check my socials in the morning; went on and did my day, leave my phone in “do not disturb mode” the rest of the day, so the bot wouldn’t get interrupted (damn you people that send me messages, I’m trying to make some money here!); start the flow and it would go on and on and on playing games, collecting coins; finally, when I had enough coins I would swap them for cash. Next morning I would wake up, check my PayPal and there it was:
> “You have received 5$”.
Now the important part: I made a total of around 25$ in a single week (5 days). All things considered, it was perhaps possible to make even more, if I had left the bot running 24h — 7 days a week.
Hold the horses… because unfortunately, all good things may come to an end!
I was being careful with trying to maintain a “normal user behavior”, trying not to turn the bot ON for long periods of time and making just enough points to “cash out”. I even slowed the bot down, because of it being “to fast” and winning a game in just a few seconds. The problem was I couldn’t make it to slow, since other people were also using bots and it became a competition— to see who could make their bot faster.
Not so long after getting the first payments, I received an email that stated something along these lines:
>* “Hello [NAME], I’m [NAME], the owner of the Math Cash app, and I’ve detected some suspicious behavior in your account. Please stop using a bot or you won’t receive any more payments from now on.”*
Of course I could try and be even more careful, or push my luck for a little bit longer, or just create a new account (this would imply I also created a new PayPal account). Despite having other options, I decided to stop. In the end, my priorities had changed and the goal was no longer “trying to make money using my knowledge”, but rather “trying to gain more knowledge about automation”.
At this point you can be asking to yourself:
> “What about people that really installed the app to play? You were turning an honest app to your advantage!”.
And you would be right. Simply, the truth is, you could not win even if you tried. There were so many bots already in place, that made it impossible to win a single game, without cheating. Am I that evil 😕?
Although this story was short, I continued along the years to explore other apps and try and find ways to make passive income from them. Some worked, others didn’t, and to be honest, it didn’t really matter anymore. I learned so much about how android apps worked (at this point), how to inspect their behaviors and how to reverse engineer apps (which is where I ended up today), that the way I see it: it’s better than money.
Thank you for reading, I hope this can somehow inspire you to invest time into your own curiosities, shenanigans and passions 😸.