Your Site Is Infected. We Find What the Scanner Missed.
Most malware removals fail the same way: the payload gets deleted, the scan comes back clean, and four days later the infection is back. That is not a reinfection — it is a cleanup that never finished. We hunt the persistence that lives outside WordPress, remove it reversibly, and close the hole that let it in.
Nothing deleted — everything reversible · Written before/after report · Re-clean free for 30 days
Six Signs You Are Looking at a Real Compromise
If any of these describe your site, the cleanup needs to go deeper than a plugin scan.
Your host sent an abuse or suspension notice
Usually with a deadline measured in hours, and usually naming one domain when the suspension would take down the whole plan.
Google shows “This site may be hacked”
Your listings get a warning label, your click-through collapses, and the flag stays until someone requests a review with a genuinely clean site.
You cleaned it and it came straight back
The most diagnostic symptom there is. It means the persistence survived, not that someone broke in twice.
Visitors land on spam, pills or gambling pages
Often only for visitors arriving from Google, or only on mobile, so it looks fine every time you check it yourself.
Pages return a blank 500 error with zero output
Frequently a broken malicious loader failing before WordPress even starts — server configuration, not a plugin conflict.
Admin users you do not recognise
Or your own account quietly demoted. If config files leaked, an attacker may hold forged session keys that no password change revokes.
Where the Persistence Actually Lives
Every one of these was found on a real client account. None of them are detected by a standard WordPress security plugin.
.htaccess · php_value auto_prepend_fileA single line telling the server to execute malware before every PHP request — before WordPress exists in memory. Security plugins scan WordPress, so they never see it..user.ini · auto_prepend_fileThe same trick in a second format, in a second location. Cleanups routinely find one pair and never open the other.wp-content/mu-plugins/Must-use plugins load automatically and cannot be deactivated from the admin screen. Given a plausible name, version and GPL licence header, they read as legitimate to anyone scrolling the list.Database drop-ins & object-cache.phpMalicious drop-in files that WordPress loads by design, and injected rows that rebuild the payload from inside your database after every file-level cleanup.Forged modification timestampsMalware rewrites mtime to blend into a folder. It cannot rewrite ctime — that needs root. Sorting by change time cuts straight through the forgery and produces an accurate history.Backups sitting in your web rootA site archive holds your database credentials and your authentication salts. Public folder, guessable filename — a permanent open door no malware removal will ever close.Full technical write-up: The Four-File Backdoor — how one infection survived two complete cleanups across 67 sites.
A Method Built Around Not Breaking Your Site
Malware removal that takes your business offline is not a success. Every step below is reversible.
Triage, within hours
You send hosting access and the abuse notice. We confirm the infection, map its scale, and tell you plainly what we are looking at — before you pay anything beyond the tier price.
Enumerate before removing
Every file is listed and inspected first, sorted by the timestamp malware cannot forge. We remove from an explicit list of paths, never by pattern matching — automated classifiers flag WordPress’s own code and break working sites.
Quarantine, never delete
Everything removed goes to a timestamped quarantine with a full manifest. Each site is tested over HTTP before and after its own changes, and anything that comes back worse is restored automatically in the same run.
Close the hole
Prepend directives cleared, salts regenerated, exposed archives moved out of the web root, admin accounts audited, credentials rotated, blacklist reviews submitted.
Verify from outside
Status code, page size, page title and the served HTML checked from outside your server for spam content and infection markers — then a written before/after report, category by category.
You Know the Price Before We Touch Anything
No hourly billing, no “it turned out to be worse than we thought” invoice at the end. If the job is genuinely bigger than the tier, we tell you before starting, not after.
Emergency Cleanup
One WordPress site, infected and needs to be clean now
One-time · per site
- One WordPress site
- Full malware and payload removal
- Backdoor & persistence hunt (.htaccess, .user.ini, mu-plugins, drop-ins)
- Database injection cleanup
- Reversible quarantine — nothing deleted
- External verification after cleaning
- Written before/after report
- Free re-clean for 30 days
- Delivery: usually within 48 hours
Cleanup and Hardening
Clean it, then close the hole so it does not come back
One-time · per site
- Everything in Emergency Cleanup
- WordPress salt regeneration (revokes forged sessions)
- Admin user audit & credential rotation guidance
- Exposed backup archive sweep out of web roots
- Google “site may be hacked” review request
- Blacklist removal requests (Google Safe Browsing, host)
- Security hardening: file permissions, XML-RPC, PHP execution in uploads
- Core, plugin and theme updates to current
- Vulnerability report — how it got in
- Delivery: usually within 48 hours
Multi-Site / Shared Account
Several sites on one hosting account, re-infecting each other
One-time · up to 5 sites
- Everything in Cleanup and Hardening, for up to 5 sites
- Account-wide simultaneous cleanup (stops cross re-seeding)
- Shared-user isolation review & hosting recommendation
- Cross-site infection mapping across the whole account
- Full credential-bearing archive sweep (all web roots)
- Per-site external verification & combined report
- Host abuse-team documentation you can forward
- 14-day scheduled re-check
- Free re-clean for 30 days across every site
- Delivery: usually 3–5 days
More than 5 sites, or a hosting account you would rather we assessed first? Book a free 30-minute call and we will quote it honestly.
Staying clean is a maintenance problem, not a cleanup problem — outdated plugins are how most WordPress sites get infected in the first place. Our $50/month Website Care plan covers updates, off-site backups, monitoring and scanning, and includes free re-cleaning while you are on it. Entirely optional.
What We Will Not Promise You
That a clean scan means a clean account
Every scanner has a blind spot and the persistence lives in it. We verify by enumeration and external testing, not by a green tick from a plugin.
That you will never be hacked again
Nobody can promise that honestly. What we can do is close the specific hole we find, tell you exactly how it got in, and show you what would have to change for it not to recur.
That we are right for every job
If your site is on Shopify, Wix or Squarespace, a file-level compromise is not usually possible. Tell us what you are seeing and we will point you in the right direction at no charge.
That we need your admin password
We do not. Hosting or SFTP access is enough to do the work, and we would rather you rotate every credential yourself once we are finished.
Frequently Asked Questions
My host says my site has malware and threatens suspension. How fast can you start?
Message us on WhatsApp or book the emergency call and we normally begin within a few hours. If your host has issued a suspension deadline, tell us the exact wording and the time it expires - hosts will almost always extend the window once they can see a real remediation is underway, and we can give you something concrete to forward to their abuse team.
I already cleaned it once and it came back. Why?
Because something survived the cleanup and rebuilt the infection. This is the single most common pattern we see, and it is almost never a fresh break-in. The persistence usually lives outside WordPress itself - a PHP auto_prepend_file directive in .htaccess or .user.ini, a must-use plugin with a legitimate-looking header, a malicious database drop-in, or a forged file timestamp that hides it from every 'what changed recently' search. Security plugins scan WordPress; those things load before WordPress exists in memory.
Do you delete my files?
No. Nothing is ever deleted. Every file we remove is moved to a timestamped quarantine folder with a full manifest, so any step can be reversed exactly. We also test each site over HTTP before and after its own changes, and automatically restore anything that comes back worse. If a removal rule ever misfires, that safety net catches it in the same session rather than a week later when you notice.
What if I have many sites on one hosting account?
Then they cannot be cleaned one at a time - and that matters more than it sounds. When several WordPress installs share a single Linux user, every site can write to every other site's files. Cleaning them sequentially just lets the uncleaned ones re-seed the ones you already fixed. We lock the whole account and clean it in a single account-wide pass. Our largest engagement of this kind covered 67 sites on one shared user.
Will you get my Google 'This site may be hacked' warning removed?
Yes, on the Cleanup and Hardening tier and above. Once the site is verifiably clean we submit the review request through Google Search Console and Safe Browsing, and handle the blacklist delisting requests. Google's review typically clears within one to three days, though the timing is theirs, not ours.
Is changing my admin password enough after a hack?
Usually not. If a wp-config.php file leaked - and it very often has, through a site backup archive sitting in a public folder with a guessable name - the attacker holds your WordPress authentication salts. With the salts they can forge a valid administrator session cookie without ever knowing a password. Changing the password does nothing to that. Only regenerating the salts revokes it, which we do on every engagement from the Cleanup and Hardening tier up.
How do I know the site is actually clean when you finish?
You get a written report with counts before and after for every category we removed, plus external verification of each site from outside your server: status code, page size, page title, and the served HTML checked for spam content and infection markers. A 200 status code on its own is not evidence of anything - we have seen a perfectly healthy-looking 200 serving a gambling site because the domain had been repointed at different nameservers entirely.
What stops it happening again?
The cleanup closes the specific hole we find. Staying clean is a maintenance problem: outdated plugins are how most WordPress sites get infected in the first place. Our $50/month Website Care plan covers updates, off-site backups, monitoring and malware scanning, and includes free re-cleaning if anything gets through while you are on it. It is optional, and we will say plainly if we think you do not need it.
Do you work on sites that are not WordPress?
Our depth is WordPress and PHP hosting, which is where the overwhelming majority of these incidents happen. We will look at a plain PHP or Laravel site and tell you honestly whether we are the right people for it. For Shopify, Wix or Squarespace, a file-level compromise is not usually possible - if something looks wrong there, tell us and we will point you in the right direction at no charge.
What do you need from me to start?
Hosting control panel or SFTP access, and the exact abuse notice from your host if you received one. That is genuinely all. We do not need your WordPress admin password to do the cleanup, and we would rather you rotate every credential yourself once we are done than hand us more access than the job requires.
Site down right now? Message us on WhatsApp — or read the full incident write-up first if you want to see how we work before you contact anyone.
Other Services
Want to Discuss Your Project?
Get a free, no-obligation consultation with our team. We'll analyze your needs and recommend the best strategy.
Every Hour It Stays Infected Costs You Rankings and Trust
Send us hosting access and the abuse notice. We will confirm what you are dealing with before you commit to anything.