Know about the detailed analysis of the Four Memes $120k hack, covering the exploit, security flaws, and preventative measures for crypto users.
The exploit on the Four Meme token stemmed from a vulnerability in its liquidity mechanism, which allowed the attacker to bypass transfer restrictions and manipulate the liquidity pool pricing.
By leveraging an uncreated PancakeSwap Pair address, they were able to initialize liquidity at an unintended price, effectively draining funds from the pool.
This attack was possible due to a flaw in the transfer function, which allowed unlaunched, untransferable tokens to be moved freely to any address, including the predicted LP address.
As a result, the attacker front-ran the launch transaction, adding liquidity and then immediately extracting profits.
This report breaks down the funds flow, contract interactions, and laundering methods used in the attack.
Three days prior, the attacker withdrew 69 BNB from a FixedFloat hot wallet:
0x4727250679294802377dD6cA6541B8E459077c95.
The attacker repeatedly called function 0xe564bedd on contract 0xfAfAf651A418D82686705eF8E798c57dBA929804 to drain liquidity from the pool.
The stolen funds were then distributed as follows:
Address 0x889d8348… further split the funds:
The attacker used contract 0x4cDdb635d276d262029E0529AB26c3830393805 to swap stolen funds via PancakeSwap’s $BROCCOLLI 3 contract (0x086d707a…):
Here are some things we found while decompiling 0x4cDdb635d276d262029E0529AB26c38303938055
The contract maintains ownership across multiple storage slots (owner_4
to owner_b
), which is unusual. This could be an attempt to obscure control or distribute permissions among different addresses.
The ___function_selector__
mapping uses the current block number as a key. This could be a way to dynamically assign function selectors or track execution, potentially to evade detection.
getPair
, createPair
) involving 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c
, which is the WBNB token contract on BSC.0x17a8
appears to check if a liquidity pool exists and creates one if not.deposit().value(v43)
). This could be a method to convert and obfuscate fund flows.Functions like 0x1097
and 0x124c
perform complex memory operations and self-calls (address(this).call
). These are often seen in laundering contracts to fragment transactions and make tracing harder.
function 0x124c()
loops through array_0
and array_1
, seemingly verifying ownership before calling 0x1097()
.If Four meme used private RPC, they could have concealed the launch transaction, preventing front-running.
Contents
Get updates on our community, partners, events, and everything happening across the ecosystem — delivered straight to your inbox.
Subscribe Now!
Office 104/105 Level 1, Emaar Square, Building 4 Sheikh Mohammed Bin Rashid Boulevard Downtown Dubai, United Arab Emirates P.O box: 416654
Privacy PolicyAll Rights Reserved. © 2025. QuillAudits - LLC
Office 104/105 Level 1, Emaar Square, Building 4 Sheikh Mohammed Bin Rashid Boulevard Downtown Dubai, United Arab Emirates P.O box: 416654
audits@quillaudits.comAll Rights Reserved. © 2025. QuillAudits - LLC
Privacy Policy