
If you’re looking for a proven method for automated mobile account creation, this guide reveals how we reverse engineer mobile apps to achieve exactly that.
Today’s Problem: Businesses and growth hackers often need to create large numbers of user accounts on mobile platforms (social media, e-commerce, rideshare, etc.) for legitimate testing or aggressive marketing campaigns. Manually registering hundreds of accounts is impractical, so clients turn to automation. However, modern apps fiercely resist automated sign-ups with technical roadblocks: strict rate limits, CAPTCHAs, SMS verifications, device fingerprinting, and even custom encryption protocols. Overcoming these hurdles requires a deep technical dive into the app’s inner workings. In this article, we explore how reverse engineers crack open mobile apps to automate mass account creation – from understanding why clients need this to how it’s done – with real case examples (TikTok, Uber, SHEIN, Temu), integration of phone verification and proxy services, and notes on ethics. By the end, you’ll see how advanced reverse engineering transforms a locked-down registration process into a scalable account creation workflow.

Why Automate Account Registrations on Mobile Apps?
Clients seek automated account creation for various reasons, all tied to scale and efficiency:
- Marketing & Social Presence: Mass account creation can amplify visibility. For example, bots create fake accounts to like, follow, or inflate engagement on platforms like TikTok. By controlling many accounts, promoters manipulate algorithms or populate a new service with users. In the wrong hands this enables scams or spam, but for growth teams it’s a way to seed content or test features at scale.
- Promotions & Referrals: E-commerce apps (SHEIN, Temu) and rideshare services (Uber) often offer new user promotions sign-up discounts, referral bonuses, free rides, etc. A client might want to automate creating new accounts to repeatedly take advantage of these offers. For instance, multiple Uber Eats accounts let one continually use new customer discount codes. Similarly, Temu’s referral program rewarded inviting new users, driving attempts to mass-produce “new” users.
- Testing & QA: Large companies may legitimately need many accounts for testing their systems (e.g. load testing a social app’s onboarding). Automation provides a controlled way to generate accounts with varying profiles for QA, without manual effort.
- Account Farms for Services: Entire markets exist for buying aged or verified accounts. A client might want to build an account farm e.g. 100 TikTok accounts or 1000 Gmail/PVA accounts for resale or internal use. Automation is the only feasible path to generate and verify so many accounts programmatically.
- Bypassing Platform Limits: Some platforms restrict each user/device to one account. Automation, combined with technical trickery, allows circumventing one-per-user rules (for benign reasons like separate business/personal accounts, or more nefarious ones). For instance, a driver might want multiple Uber driver accounts to maximize earnings, or a seller might create many accounts on a marketplace to post more listings than allowed.
In short, whether for growth hacking, promotional abuse, or legitimate testing, clients see business value in automating registrations. The next challenge: getting past the sophisticated defenses that mobile apps employ to thwart exactly this kind of automation.
Key Challenges in Automating Mobile Sign-ups

Automating account creation isn’t as simple as scripting a few HTTP requests. Mobile apps and their backend servers implement layered defenses to ensure each new signup is a real human on a real device. Here are the major hurdles reverse engineers must overcome:
- Rate Limits & IP Blacklisting: Platforms track how many accounts are made from a given IP address or network. Burst activity triggers bans. Solution: use rotating proxies or residential IP addresses so each account comes from a unique network. For example, cross-border e-commerce apps like Temu and SHEIN heavily scrutinize IPs using a datacenter or known proxy IP will get you flagged as “high risk”. The safe practice is often “one account per IP” to avoid any association. Reverse engineers integrate proxy services to automatically switch IPs for each registration attempt.
- CAPTCHA Challenges: Sign-up flows often include CAPTCHAs (image puzzles, “I am not a robot” checks, or invisible behavior-based CAPTCHAs) specifically to stop automated bots. CAPTCHAs present a Catch-22: making it too hard will annoy real users, but making it easy means bots solve them. Some apps might only trigger a CAPTCHA if the sign-up seems suspicious (e.g. high volume or known bad IP). Solution: Reverse engineers bypass CAPTCHAs either by feeding the challenge to a solver service (e.g. using an API like 2Captcha where humans solve it behind the scenes), or by intercepting and disabling the CAPTCHA check within the app. In Android apps, it’s sometimes possible to hook the code that verifies the CAPTCHA token and force it to accept a dummy value. In one project, our team used Frida (a dynamic instrumentation tool) to hook the captcha verification function, effectively skipping the human verification step entirely. This allowed automated testing to continue without manual input, demonstrating how bypassing CAPTCHAs can “significantly accelerate” automated processes. (Of course, such bypasses are kept private and used carefully, since they cross into a grey area of breaking app protections.)
- SMS / Phone Verification (OTP): Almost all high-value apps require a unique phone number to verify each new account. This is a strong roadblock against mass account creation you’d need hundreds of real phone lines. Attackers have countered with services offering pools of phone numbers for verification (often VoIP or SIM rental). Solution: integration with online SMS provider APIs. Reverse engineers build the automation to interact with services like MobileSMS, Twilio, 5SIM, SMS-Activate, etc. The process: request a new number via API, use it to register in the app, wait for the provider to forward the SMS code, then submit that code to complete registration. Each account thus gets a unique phone number as required. An automated system can orchestrate this seamlessly, disposing of each number after use or renting long-term if needed. A subtle challenge is that some apps detect “virtual” or VoIP numbers for instance, Uber and others may reject numbers that appear to be from known online services. Thus, part of reverse engineering is testing which number providers work reliably (often real SIM services yield better results than cheap VoIP).
- Device Fingerprinting & Environment Checks: Mobile apps gather extensive device data during registration to ensure one device = one account (and to detect emulators or bots). This includes hardware identifiers and behavioral fingerprints. Modern Android and iOS apps collect signals like device model, OS version, unique device IDs, language, time zone, sensor data, and more. Some even check for emulator artifacts (e.g. generic device model, absence of a SIM, constant device ID) or run environment tests (like checking if the app is being automated by UI frameworks). For example, the Temu shopping app was found to scan nearby WiFi networks and your connection type, using that as a fingerprint. It would detect VPN usage by seeing an unusual WiFi environment or repeated SSIDs, and even ran at phone startup (before a user could toggle a VPN) to grab the real IP and network info. Solution: Reverse engineers address fingerprinting on multiple fronts:
- Device Data Spoofing: Using tools or code hooks to feed the app fake device information. On a rooted Android device or emulator, one can change the Android ID, device name/model, and Google Services Framework (GSF) ID that the app sees. Scripts can randomize these per account. We ensure that every account looks like it’s from a different phone. For instance, an automation bot might load a new profile for each run with a distinct model (Samsung, Xiaomi, etc.), screen resolution, and device ID. Care is taken not to repeat rare values – e.g. using the same screen resolution too many times could become a pattern.
- Anti-Emulator Tactics: If the app refuses to run on emulators or detects virtualization, we use reverse engineering to bypass emulator checks. This might involve patching the app’s code via smali or Frida to skip root/emulator detection. Common tricks include intercepting calls to
Build.MODEL
orBuild.MANUFACTURER
and returning real device strings, or hooking API calls that check for suspicious files (like/proc/net/tcp
which some apps monitor to detect debugging). - True Mobile Environment: In some cases, the only reliable method is to run the automation on actual devices (a mobile device farm). Indeed, some bot operators opt for racks of budget Android phones, since real devices naturally emit real sensor and network data. Our goal with reverse engineering, however, is to avoid that extreme and achieve the same credibility with software. By carefully spoofing environment signals and using mobile residential proxies (e.g. 4G modems), we can closely mimic a real phone on a carrier network. This matches recommendations from experts who note that using residential/mobile IPs and proper device fingerprints can raise success rates from under 30% to over 90% in registrations.
- Application-Layer Encryption & Traffic Obfuscation: Many apps don’t send plain JSON over HTTPS for critical endpoints; they add proprietary encryption or signing to the data. For instance, TikTok’s private API calls include parameters like
x-gorgon
orx-khronos
which are cryptographic signatures to ensure the request is coming from a legitimate app. Similarly, some apps encrypt their registration payload or require a dynamic token obtained via in-app computation. Reverse engineers often find that API endpoints and keys are hidden or obfuscated inside the app. In one real case, an app stored its API URLs in encrypted form within native libraries and only decrypted them at runtime. Others generate crucial request headers in native code (NDK) to make replication harder. Solution: This is where deep reverse engineering shines:- We use static analysis tools (APKTool, JADX, Ghidra, etc.) to comb through the decompiled app for references to endpoints or cryptographic functions. If classes and methods are heavily obfuscated (e.g. named
A1
,B3
…), we rely on patterns: searching for known library calls (like anHMAC
function or JSON keywords) or debug strings. - We utilize dynamic instrumentation (Frida) to hook functions at runtime. For example, to handle SSL pinning (custom certificate validation), we attach Frida scripts that intercept the pinning check and force it to accept our proxy’s certificate. Once SSL pinning is bypassed, we can observe the raw API traffic with tools like mitmproxy or Burp Suite, even if encrypted internally. If the app encrypts payloads, we can hook just before the network send function to grab the plaintext data or the generated token.
- In advanced cases, we replicate the app’s cryptography in our script. For TikTok, for instance, reverse engineers have spent significant effort disassembling the algorithm that produces the request signatures (some have even reverse engineered TikTok’s custom JavaScript VM that computes anti-bot tokens). With enough work, our team can extract the logic or keys from the app and implement them server-side. In practice, if direct replication is too time-consuming, an alternative is to let the app (or a stripped-down version of it) run in an instrumented environment to generate whatever token we need for each request. This was the approach for one complex app protected by a multi-layered VM and obfuscation – we ended up using a tailored script that drives the original app’s code to produce valid tokens behind the scenes, essentially tricking the app into signing our automated requests.
- We use static analysis tools (APKTool, JADX, Ghidra, etc.) to comb through the decompiled app for references to endpoints or cryptographic functions. If classes and methods are heavily obfuscated (e.g. named
Each of these challenges IP, CAPTCHA, SMS, fingerprint, encryption is formidable. But a skilled reverse engineering team approaches them systematically, using a suite of tools to peel back protections. Next, we’ll outline the methodology for extracting a registration workflow from a mobile app, step by step.
Methodology: Reverse Engineering the Registration Workflow
How do we go from a black-box app to an automated account generator? The process typically unfolds in stages, combining static analysis (looking at the app’s code) and dynamic analysis (observing it running):
- Setup a Testing Environment: We prepare a device or emulator where we can run the mobile app and intercept its network traffic. For Android, this often means using a rooted phone or an emulator like Genymotion with the ability to add custom certificates. Tools like mitmproxy or Burp Suite are configured as a proxy to capture HTTP(S) calls. We install the proxy’s certificate on the device so that HTTPS traffic can be decrypted. (If the app uses certificate pinning, we will address that in a later step.) We also ensure we can manipulate the device environment (via root or developer options) so that we can simulate different conditions (network, GPS, etc.) if needed.
- Traffic Interception and Analysis: With the proxy in place, we run the app and walk through the registration flow manually. Using mitmproxy’s console or Burp’s intercept, we watch the sequence of requests: e.g., fetching configuration, sending an SMS code request, submitting the code, creating username/password, etc. Key endpoints and parameters are noted. For example, we might see a
POST /api/v1/register
with a JSON payload containing the phone number (perhaps in an obfuscated field) and device info. We record all necessary headers (sometimes there are auth tokens or special headers that must accompany the request). This step is straightforward if the app doesn’t employ additional encryption. In many cases, this gives us the basic “map” of the registration API calls that need to be replicated.Important: If we encounter HTTPS errors or empty payloads due to SSL pinning (app refusing our proxy), we deploy the next step.
- Bypass SSL Pinning (if present): Many apps today have SSL pinning they won’t trust any certificate except the one pinned, so our proxy can’t decrypt traffic. To bypass this, we use Frida with a known script or the Objection toolkit. Frida can attach to the running app and hook common trust-checking methods, effectively disabling the pinning. One widely used Frida script replaces the certificate validation logic in popular libraries so that all certificates are accepted. We run the app with Frida’s script injected (
frida -U -f com.example.app -l frida-pinning-bypass.js
) and then capture traffic again. With TikTok and others, this step is mandatory – without it, tools like mitmproxy show nothing. After the hook, we should see the registration API calls in plaintext.

- Static Analysis of the APK/IPA: In parallel, or after capturing traffic, we dive into the app’s code to understand how those requests are formed. We use APKTool to decode the app’s resources and JADX or another decompiler to read the Dalvik bytecode in a friendly Java-like form. We search for keywords like “register” or the URL endpoints observed. This often leads to the functions responsible for registration. For instance, we might find a class
AccountService
with a methodregisterUser(phone, email, …)
. Inside, we look for clues: does it construct a JSON payload? Does it call a helper to obtain a timestamp or a hash? Any mention of “captcha” or “token”? At this stage, we often uncover security measures:- Perhaps the app calls a native library method
genSignature(payload)
indicating a custom signature is added. We might locate that native code in the APK’s lib folder for reverse engineering if needed. - We might find the app uses Firebase or third-party OTP services (some apps rely on Google’s SafetyNet or reCAPTCHA for verification we’d see references to SafetyNet APIs or a webview with recaptcha).
- If the endpoints were encrypted (as in some financial apps), static analysis may show the decryption routine or where in code the endpoint becomes visible (we might need to dump memory at runtime to get it). In one project, class/method names were meaningless due to extreme obfuscation, so we had to trace calls at runtime instead of relying on static names.
- Perhaps the app calls a native library method
- Dynamic Instrumentation for Values: Knowing where in code registration happens, we can use Frida hooks to grab dynamic values. For example, if there’s a function that generates a header
X-Auth-Token
for the registration request, we can hook that function and print out the token at runtime. This way we learn the algorithm without fully reverse engineering it by hand. In practice, we often write small Frida scripts for target apps to dump: the request URL being used, final JSON payload, any special headers, and any function return values that look like hashes or signatures. This is like getting the app to tell us its secrets as it runs. In complex scenarios described by our team, even CAPTCHAs can be bypassed by hooking e.g., intercepting the function that checks if the captcha was solved and forcing it to “true”. - Replicating the API Calls: Armed with the endpoint URLs, required parameters, and any needed crypto or token generation, we move to implementation. This usually means writing a Python or Node.js script (or any language of choice) that will perform the same sequence of HTTP requests that the app does, but in an automated loop. We use the findings from above to craft each request exactly as the app would. For instance:
- Call 1:
POST /send_code
with JSON containing phone number (and maybe an app ID and device ID). Our script waits for the SMS. - Call 2:
POST /verify_code
with the code from SMS, plus whatever auth token was returned from Call 1. - Call 3:
POST /register
with user details (username, password) and all the headers and signatures required. - Perhaps Call 4:
POST /welcome
or some final setup call.
- Call 1:
- Integration of Proxies and SMS APIs: The script is enhanced to use a proxy for each account cycle and to call an SMS service API. For example, before starting an account creation, the script might fetch a new residential proxy endpoint from a pool (ensuring it’s in the desired country or city for that account). It will route the HTTP requests through that proxy. Likewise, it will call, say,
get_number(country="US", service="Uber")
on an SMS API to rent a phone number, then trigger Uber’s SMS, then poll the API for the incoming OTP text. Once received, it feeds it into the verify call. All this happens in seconds, without manual intervention. - Testing and Refinement: We run the automated flow for a few accounts as a test. Usually, initial attempts reveal some missed piece maybe the server responds “Fingerprint mismatch” or “Invalid token”. This means something in our replication is off. We then compare our captured traffic (from the real app) with the script’s traffic to spot differences. Tools like Charles Proxy or a custom logger help here. We adjust our requests to closer match the app’s. This iterative loop continues until the script consistently gets “Account created” responses. It’s a gratifying moment: we’ve essentially extracted the app’s private registration API and built our own client for it.
Throughout this methodology, we rely on the experience and tools of reverse engineering. It’s not just writing code; it’s a mix of hacking the app, decoding hidden behaviors, and leveraging knowledge of common anti-bot techniques to anticipate issues. Our team at ReverseEngineer.net has honed this process on many projects from relatively open apps to highly fortified ones. In fact, part of our service offering is explicitly Android/iOS API monitoring, bot development, and feature modification. We use the same techniques described above to build custom solutions for clients, whether it’s automating an app or extracting hidden data.
Now, let’s delve into a few real-world examples of account creation automation to illustrate the challenges and solutions in context.
Case Studies
Case Study 1: TikTok – Battling a Social Giant’s Bot Defenses
The Scenario: A client wanted to create numerous TikTok accounts automatically for marketing. TikTok, however, is notorious for its advanced bot detection. It employs a custom JavaScript virtual machine (VM) in its app and web code to obfuscate anti-bot logic. This VM computes fingerprinting data and likely issues dynamic challenges. TikTok’s backend expects certain calculated tokens in API requests if they’re missing or incorrect, the request is rejected or flagged. Moreover, TikTok requires phone verification and sometimes email for new accounts, and may present a CAPTCHA or “slide puzzle” verification if it suspects automation.
Challenges Identified: Through reverse engineering research, we learned TikTok checks for automation indicators like the presence of headless browser flags or unusual behavior timing. Bot developers have found TikTok’s HTTP API “a huge pain” because you must replicate a sequence of calls and generate signatures for each. Specifically, creating an account required a valid device_id
, register_time
, and an X-Gorgon
header (a hashed token). The app also collects device info (OS, model) and uses it to create a fingerprint that’s sent during registration.
Our Approach: We hooked the TikTok Android app with Frida to intercept the registration request. We captured the headers and body just before they left the app (after all internal calculations). This yielded the mysterious X-Gorgon
value and how it’s formed a combination of device info, timestamps, and a secret algorithm. We then looked at TikTok’s native libraries; using a combination of static analysis and open-source research, we found references to a function that generates this token (it was in an ELF library, heavily obfuscated). Rather than fully reverse engineer the math (which could take weeks), we repurposed TikTok’s own code: we executed the native function through a Python script by leveraging an emulator environment, effectively asking the app to sign our requests.
We also integrated mobile proxies (4G proxies) because TikTok aggressively bans datacenter IPs for new accounts. Each account cycle used a fresh proxy endpoint. For SMS, we discovered TikTok was very sensitive to number sources many cheap online numbers were already flagged. We worked with higher-quality SMS providers (real SIM gateways) to improve verification success.
Outcome: After considerable effort, we achieved an automated TikTok account creator, but with some rate limiting. TikTok’s defenses meant we had to throttle the creation to avoid triggers (no more than a few per proxy per hour). We also randomize behavior e.g. after account creation, the script might watch a few videos (via TikTok API) to simulate a normal user lifecycle. This case underscored that even the most sophisticated anti-bot systems can be understood and emulated, but it requires deep reversing and constant maintenance. TikTok updates its app and security often; part of our offering to the client was ongoing support to adjust the automation whenever TikTok’s backend changed. It truly became an arms race of reverse engineering versus anti-bot engineering.
Case Study 2: Uber – Automating Rider Accounts with OTP
The Scenario: A client (for example, a marketing partner) needed to automate the creation of Uber rider accounts in various cities to leverage referral codes and promotions. Uber’s sign-up is relatively straightforward on the surface: phone number verification via SMS or WhatsApp, then create a profile with name and payment info. However, Uber’s API is not public for this, and the app’s private API calls are not documented.
Challenges Identified: Uber’s mobile app uses a mix of REST and GraphQL calls. The account creation flow involved a few steps: submit phone, get OTP, verify OTP, then create account with personal details. We expected SMS verification to be the main hurdle (needing lots of phone numbers). Additionally, Uber might employ device fingerprinting (e.g. collecting device identifiers to prevent many accounts on one phone). We also knew Uber could detect emulator usage prior research showed Uber’s app had checks for certain emulator properties. Another challenge: once accounts were created, if they were all used from the same device or IP, Uber’s risk engine might ban them. So, the client also wanted these accounts created in a distributed manner (different IPs, locales).
Our Approach: Using mitmproxy and a rooted Android phone, we captured the sequence of calls during a fresh Uber signup. We found:
- A call to
https://mobile.ubermap.net/v1/auth
to start the phone verification. It returned arequest_id
. - A call to the same endpoint with the OTP code and
request_id
to verify. - A GraphQL mutation to actually create the user profile (with fields for name, email, etc.), which required an auth token obtained from the previous step.
Uber’s traffic was JSON and not encrypted beyond HTTPS no custom hashing of payload. This made replication easier; we just had to include all the headers the app did (like X-Uber-Device
, X-User-Language
, etc.). We gleaned these headers by inspecting the app’s requests and also by decompiling the app and finding a class that set up a default header set for network calls.
We built the automation script to perform these calls in order. For phone numbers, we integrated with an SMS provider API and specifically used non-VoIP numbers because Uber often bans virtual numbers. We noticed Uber’s SMS codes come through a specific sender ID, which the SMS API handled fine.
To manage device fingerprint, our script generated a random device identifier for each account. Uber’s app likely uses a device GUID; since we were calling the raw API, we had to provide something. By studying the app’s local storage, we found it generates a device_fingerprint
value (a UUID) and we did the same. We also varied user agent strings to mimic different phone models.
Outcome: The result was a mass-account-creation tool for Uber that could pump out verified accounts complete with phone numbers. The client could specify the country (to pick number country and relevant referral code region). One snag we encountered was Uber occasionally prompted for captcha on signup if IP risk was high. This was rare for our residential IP pool, but when it happened, the automation would pause and alert us. We solved it by integrating a captcha-solving service for those edge cases.
One interesting observation: Uber’s backend started sending promotional emails to many of these accounts (welcome offers, etc.), which indicated our accounts were considered legitimate enough to enter marketing flows. This case was comparatively easier than TikTok, demonstrating that not all apps have state-of-the-art anti-bot – some rely on just IP and phone verification, which are surmountable with the right resources.
Case Study 3: E-commerce Apps (SHEIN & Temu) – New Customer Frenzy
The Scenario: SHEIN and Temu are popular shopping apps known for giving special discounts or freebies to new users. A client aimed to create a large number of “new customer” accounts to exploit these promotions (for personal use and possibly to resell coupon codes). Both apps are China-based and had been actively combatting waves of fake account creation that were abusing referral and coupon systems.
Challenges Identified: As discussed earlier, Temu in particular had very stringent environment checks. Users in online communities reported that Temu would block signups if anything looked off e.g. using the same WiFi for multiple accounts or using a VPN triggered “suspicious activity” errors. SHEIN likewise would often require email and phone verification, and if an IP was flagged, it might shadow-ban the account (allow creation but later prevent orders). Both apps likely use third-party fraud detection SDKs that fingerprint the device (collecting sensors, apps installed, etc.).
Our Approach: We tackled Temu first, since it was reputed to be harsher:
- We conducted a network capture and saw a pattern: Temu’s app did a lot of background calls upon startup (even before registration). It fetched device configuration and likely reported some fingerprint data to their servers. We suspected Temu’s backend scores the device risk even before account creation. To avoid immediate flags, we made sure our automation always started from a “clean” state: new device ID, new IP, and we let the app idle a bit. By letting the automated app run for a minute (browsing some content via API, for example) before attempting register, we mimicked a real user who installed the app and browsed products. This was gleaned from reverse engineering the app’s usage patterns.
- We used residential proxies with localized IPs. Ipipgo (a proxy provider) published advice that using true residential IPs matching the target country was key for Temu/SHEIN. We secured proxies that were actually in the target region (with ISP and geolocation matching), drastically reducing IP bans. We also took advantage of a feature to get a new IP for each account easily (since one IP per account was the rule).
- On the device side, we wrote Frida hooks to randomize device reports. For example, when the app called Android’s WiFi info API (to get SSID and nearby networks), we hooked it to return a realistic but fake set (e.g. a list of 5 network names that might be found in a café or apartment, random each time). We similarly spoofed the device’s GPS location (placing it roughly in the area corresponding to the IP’s city, to avoid geolocation mismatches).
- Both apps required phone verification. We integrated with multiple SMS services to find ones whose numbers weren’t banned. Through trial, we found some providers’ numbers consistently didn’t receive the SMS (likely blocked by the app), whereas others worked. We ended up using a slightly more costly provider that offered real SIM numbers in the US and UK, which had a nearly 100% success rate for receiving Temu’s codes.
- Automation flow: Using the above measures, our script would: assign a fresh proxy + device profile -> launch a headless instance of the app or our custom calls -> perform any pre-registration handshakes -> request phone verification -> get OTP -> finalize account -> log out and clean up. We included a step to cache the account’s credentials or token, and its associated IP, so the client could later use the account in the same environment (important because if they log in later from a vastly different fingerprint, it could trigger re-verification).
Outcome: The success rate for account creation climbed dramatically after implementing the native IP and fingerprint camouflage strategy. Initially, many attempts were blocked (we’d see errors or a need for additional verification), but eventually ~9 out of 10 accounts were created smoothly on first try. The client used these accounts to redeem new-user coupons. We advised them on usage patterns: e.g. do not redeem hundreds of coupons to the same delivery address on the same day that could link the accounts on the merchant side. Indeed, we found that while creating the accounts was achievable, using them in a way that stays under the radar was another consideration. This goes slightly beyond pure reverse engineering into operational security, but it’s an area where we provide guidance. For instance, with the Temu accounts, orders were placed with varied names and slight address variants to avoid obvious linkage, a tip gleaned from community discussions on account farms.
These case studies highlight a spectrum from high-security apps (TikTok) to moderately protected services (Uber) to promo-rich apps with aggressive anti-fraud (Temu/SHEIN). In each case, reverse engineering techniques from network interception to code hooking were pivotal in unlocking automation.
Integrating SMS Verification and Proxy Systems
A recurring theme is the need for phone numbers and clean IP addresses. Let’s dig a bit deeper into how these integrations work in practice when building a mass account creation system:
- Phone/SMS Providers: We typically interface with providers via their APIs. Most offer endpoints like
getNumber
(to rent or fetch a number for a specific country and service) andgetMessages
or webhook callbacks for receiving SMS. For example, a service might have an API call to request a number for “Uber” in “US” which returns a number ID and the phone number. We then supply that phone to the app’s API. The SMS arrives at the provider, and we either poll an endpoint for the code or the provider pushes it to our callback URL. Services like MobileSMS.io emphasize they provide real SIM-card numbers and even allow long-term rental for reuse. This can be useful if our client wants to keep the accounts long-term (so the number stays attached for any future re-verification). Our system can be configured either for one-time use numbers (cheaper, good for throwaway accounts) or leased numbers (for accounts that need persistence). - Handling SMS Challenges: Sometimes SMS doesn’t arrive, or arrives too slowly for automation. We build in logic to retry or to mark that provider as “failing” and switch to backups. Also, if an app allows voice call verification as an alternative (some do after a timeout), we could consider integrating that, though it’s rarely needed. The key is to have a robust handler so the automation isn’t stuck waiting indefinitely usually a timeout of 60 seconds before trying a new number or reporting failure is implemented.
- Proxy Management: For proxies, we often work with providers of rotating residential proxies. These give access to a large pool of IPs. We ensure that each new account task gets a fresh IP endpoint. Some providers allow sticky sessions (keeping the same IP for a duration) we use that during the whole register process of one account. After completion, for the next account, we explicitly request a different exit node. We also monitor the proxy quality: if the IP provided is detected as a proxy or on a blacklist (some proxy APIs provide a health check), we can toss it out before even using it. As the IPIPGO case showed, using clean residential IPs can make or break the success. Our integration can also incorporate services that simulate mobile 4G connections, which are essentially real Android devices as proxies these are excellent for appearing genuine but can be slower and pricier. It’s a trade-off: for extremely guarded apps like TikTok, a mobile proxy reduces ban risk significantly; for less guarded scenarios, standard residential broadband IPs suffice.
- Concurrency and Scaling: The system we build can run multiple threads or processes in parallel, each handling one account creation. This is where careful design is needed: we don’t want two accounts accidentally using the same proxy or phone number. A centralized coordinator or queue system is often used to assign resources (number + proxy pair) to each thread. If a client needs, say, 1000 accounts, we might run 50 threads over time. We randomize timing slightly between threads to avoid a synchronous pattern that could be detectable (e.g. dozens of accounts born in the same second).
- Geographic Targeting: Sometimes, clients want accounts from specific regions (to get region-specific promo codes or to simulate user base in a region). We can select proxies from those regions and phone numbers with the corresponding country code. For example, creating 100 European SHEIN accounts vs 100 US SHEIN accounts our system would use EU IPs and maybe even
.eu
emails for the former, versus US IPs for the latter. These details can matter since platforms often tailor verification or content by region.
By tightly integrating these external services, the output of our reverse engineering efforts becomes a full-fledged account generation pipeline. It’s not just the app’s API we’ve recreated, but the surrounding infrastructure to support mass usage of that API (numbers, network, etc.). This is often delivered to the client as either a command-line tool, a script with configuration files, or even a simple dashboard interface where they can click “Create 50 accounts” and watch the system do its magic.
Building the Automated Registration System
After extracting the registration endpoint and understanding the workflow, what kind of system do we actually build for the client? It depends on their needs, but generally:
- API Wrapper or Library: In some cases, the client (maybe a developer themselves) wants an API wrapper – essentially a Python or JavaScript library that provides functions like
create_account(phone, proxy)
which internally handles everything. We deliver a well-documented library that they can integrate into their own software. For instance, a marketing platform might integrate our TikTok API wrapper to spin up accounts as needed for their promotional bots. - Standalone Tool or Script: Non-technical clients prefer a ready-to-run tool. This could be a Python script with a simple menu or a lightweight UI. It might read from a config file or Excel sheet (for input like desired usernames or referral codes to use) and then proceed to create accounts. We often implement logging to output the results (e.g.
account1: success (username: X, password: Y)
, or errors likeaccount5: failed – proxy blocked
). The output might be a CSV with all the created account credentials. - Scalable Cloud Service: For large-scale continuous account creation, we can deploy the solution on cloud servers. Imagine a system where a client can call our API (hosted on a server we maintain) with a request like “give me 10 new verified accounts for App X”, and our backend will trigger the process and return the credentials via API. This becomes almost an Account-Creation-as-a-Service model. Of course, caution is needed this verges on territory that many platform TOS (Terms of Service) would disallow, so such a service is usually kept private and custom for each client.
- Maintenance & Updates: The delivered system isn’t static. Apps change their protocols and defenses, so maintenance is part of the package. We typically offer ongoing support e.g. if Instagram or TikTok changes their registration flow next month (they often do minor changes to thwart known bots), we will re-analyze and update the automation. Because we intimately know the app’s guts from our initial RE work, updating usually means diffing the new app version to find what changed (perhaps a new field in the request, or a new signature mechanism) and patching our script. For example, if an app introduces a new proof-of-work in the flow (like requiring solving a small computation puzzle as seen in some anti-bot strategies), we’d implement that in our automation so it continues to work.
- User Simulation Extras: Beyond raw account creation, sometimes clients want the new accounts to look real e.g. have a profile picture, some activity, etc. We can extend the system to, after creating an account, also perform additional API calls: upload a profile photo, follow some accounts (in case of social media), add a random bio, etc. These are small add-ons but increase the longevity of accounts by reducing the chance they’re flagged as empty sockpuppets.
Throughout building these systems, credibility and stealth are priorities. We adopt a mindset akin to malware authors (but for ethical, client-requested purposes): make the automation as human-like and undetectable as possible. This mindset is reflected in our technical tone we demonstrate capability to handle complex obstacles (we can bypass this, hook that, encrypt this) without going into academic detail unnecessarily. The goal is to inspire confidence in potential clients: that yes, it is technically possible to automate these workflows, and yes, our team has done it and can do it reliably.
Reverse Engineering Unlocks Automation – Let’s Talk

Mobile apps are designed like fortresses against automated account creation but with expert reverse engineering, those fortresses can be penetrated (ethically and with permission, of course). We’ve discussed how a combination of tools (Frida, APKTool, mitmproxy, etc.) and techniques (hooking, static analysis, environment spoofing) empowers us to extract private registration APIs and build robust account creation systems. From tackling CAPTCHAs and SMS codes to evading device fingerprint traps, our team has repeatedly shown that automation is achievable even on “locked-down” platforms. The case studies of TikTok, Uber, SHEIN, and Temu exemplify the creativity and persistence needed and hopefully demonstrated the capability we bring without bogging down into overly academic detail.
If you’re a business or individual who needs this kind of solution perhaps to streamline your QA process, gain competitive insights, or manage large-scale social media operations we can deliver a custom, in depth solution. We combine reverse engineering prowess with practical engineering to not only find the way in, but also build the tools to achieve your goals. All our projects are handled with professionalism, discretion, and a keen awareness of the technical challenges and ethics involved.
Interested in automating a mobile workflow or facing a similar challenge? We invite you to reach out to the ReverseEngineer.net team. With our expertise in APK decompiling, API monitoring, bot development, and more, we’re confident we can craft a solution for your unique needs. As our own research articles show, we’ve even bypassed advanced protections like custom captchas and multi-layer SSL pinning in real projects the know-how is battle-tested.
Unlocking a mobile app’s potential through reverse engineering can give you a competitive edge. Contact us for a consultation, and let’s discuss how we can help automate the impossible. We’re ready to tackle your complex technical challenges and turn them into success stories.
Let's Work Together
Need Professional Assistance with Reverse Engineering or Cybersecurity Solutions? Our Team is Ready To Help You Tackle Complex Technical Challenges.