August 23, 2022

Scam Bot uniswap. Видео с 1.3 млн просмотров.

И так, для тех кто открыл эту статью НЕ после просмотра моего видео, рекомендую начать с него ТЫК

Немного предыстории. В поисках видео про скам-контракт с легендой о торговом LIQUIDITY BOTе, я наткнулся на это:

1,3 млн просмотров на откровенно мошенническом видео!

До этого я разбирал контракт с похожего видео, где деньги уводит код импортируемый с npm(вот его код - ТЫК ),

но в этом контракте ТЫК импорта не было!

Я решил разобраться

Для начала, я задеплоил контракт в Remix:

Публично открыты только две функции. Start, которую предлагают вызвать в видео и Withdraw.

Я решил убедиться, что контракт действительно уводит деньги, НУ МАЛО ЛИ :))

Я добавил функцию balanceThis, чтобы проверить баланс на контракте после пополнения

function balanceThis() external view returns(uint) {
   return address(this).balance;
}

и так как функция Start в контракте

function start() public payable {

помечена как payable, я могу отправить деньги на контракт вместе с ее вызовом.

Деньги отправились, проверяем баланс

Предположения верны, значит будем искать адрес, куда они отправляются!

Продолжаю поиск

Очевидно, нужно начинать поиск с публичных функций. В контракте их 2:

В них все понятно, они вызывают отправку всех денег с баланса

address(this).balance

на адрес:

payable(_callFrontRUnActionMempool() и payable(withdrawalProfits())

находим обе функции

они ссылаются на одну:

parseMemoryPool(callMempool())

которая принимает строку из функции callMempool

Для начала давайте посмотрим в Remix, что возвращают эти функции.

Для этого я изменю области видимости с internal на public.

Передеплоим контракт.

Дальше снова закинем 1 eth при вызове Start, посмотрим, что возвращает callMempool и вставим это значение в parseMemoryPool

Вуаля :) мы получаем адрес, на который уходит весь эфир с этого контракта 0x7a48a3b91c9402af425210907aa37f1aaea46800 - ТЫК (etherscan)!

Как это все получается?

Функция parseMemoryPool совершает бесполезные махинации, но выполняет главную задачу преобразует строку, возвращаемую из callMempool, в тип адрес, При этом сам адрес уже сформирован в callMempool.

В ней указаны значения

которые при помощи дополнительных функций преобразуются из десятичного в шестнадцатиричный формат

этой

и этой

и собирается в адрес

Итог

Мне пришлось потратить пару часов, чтобы разобраться в коде и понять, что меня собираются обмануть. К сожалению, не все это могут. Но вывод один: нельзя смотреть на цифры. Даже 1 300 000 просмотров скрывают обман.

Ссылку на видео добавлю, хотя его рано или поздно удалят - ТЫК

Благодарю тебя за то, что ты дочитал до конца мою первую статью!