Dupe ou exploit de dinheiro no FiveM: desfaça com um backup
Alguém duplicou itens ou deu dinheiro para si mesmo? Ache quando começou, escolha o backup logo antes e dê rollback no banco perdendo o mínimo possível.
Por PK
- Backups
- Rollback
- Dupes
- Economy
Nesta página
- Como é um dupe ou um exploit de dinheiro
- Por que limpar na mão quase nunca funciona
- Ache o ponto de restauração certo
- Por que a frequência dos backups decide quanto você perde
- Rollback em todo mundo ou só em alguns jogadores
- Como os backups do FiveDock resolvem isso
- Antes de ligar o servidor de novo
- Perguntas frequentes
- Até onde dar rollback no FiveM depois de um dupe?
- Os jogadores perdem progresso se eu der rollback no banco?
- Um cheater deu dinheiro para si mesmo. É só tirar?
- O txAdmin consegue dar rollback no banco de dados?
- Os backups do FiveDock vêm no plano gratuito?
Quando um jogador duplica itens ou um cheater dá dinheiro para si mesmo no seu servidor de FiveM, o jeito mais limpo de resolver é restaurar o banco de dados a partir de um backup feito logo antes. Apagar as cópias na mão quase nunca funciona, porque quando você percebe, o dinheiro e os itens já estão com outros jogadores. Este post mostra como esses exploits costumam acontecer, como achar o ponto de restauração certo, quando dar rollback em todo mundo e quando só em alguns jogadores, e como os backups do FiveDock fazem isso pelo painel.
A maioria dos servidores chega ao FiveDock pela CDN, para as imagens do ox_inventory e as fotos do celular. O FiveDock também faz backup do banco de dados do seu servidor, em todos os planos, inclusive no gratuito. E é isso que te salva na noite em que alguém quebra a economia.
Como é um dupe ou um exploit de dinheiro
Normalmente começa com uma mensagem no Discord. Alguém está vendendo fuzis pela metade do preço, um jogador novo comprou três supercarros no primeiro dia ou o mercado de repente está cheio de um item que deveria ser raro. Você vai olhar e um personagem tem 40 milhões no banco, enquanto o segundo mais rico tem 200 mil.
Por trás, quase sempre está uma destas causas:
Por que limpar na mão quase nunca funciona
O primeiro reflexo é zerar a conta do cheater e banir. Isso conserta uma linha. Quando você fica sabendo, o dinheiro geralmente já virou carros e casas e foi parar no bolso de outros jogadores, e os itens duplicados foram vendidos, guardados em stashes e dados para amigos. Cada um desses lugares é mais uma linha em mais uma tabela, e alguns vão passar batido.
Um backup de antes do exploit não tem nada disso. Você restaura e as cópias somem de todo lugar de uma vez, inclusive dos lugares onde você nunca pensaria em olhar.
Ache o ponto de restauração certo
O ponto de restauração é o backup mais recente feito antes de o exploit começar. Um feito depois já contém as cópias. Para achar:
mysql -u root -p -e "CREATE DATABASE restore_check"
mysql -u root -p restore_check < fivem-2026-10-23-2000.sqlDepois veja quem ganhou mais desde esse backup. No QBCore e no Qbox:
SELECT live.citizenid,
CAST(JSON_EXTRACT(old.money, '$.bank') AS SIGNED) AS bank_then,
CAST(JSON_EXTRACT(live.money, '$.bank') AS SIGNED) AS bank_now,
CAST(JSON_EXTRACT(live.money, '$.bank') AS SIGNED)
- CAST(JSON_EXTRACT(old.money, '$.bank') AS SIGNED) AS gained
FROM fivem.players AS live
JOIN restore_check.players AS old ON old.citizenid = live.citizenid
ORDER BY gained DESC
LIMIT 20;No ESX o dinheiro fica na coluna accounts de users:
SELECT live.identifier,
CAST(JSON_EXTRACT(old.accounts, '$.bank') AS SIGNED) AS bank_then,
CAST(JSON_EXTRACT(live.accounts, '$.bank') AS SIGNED) AS bank_now,
CAST(JSON_EXTRACT(live.accounts, '$.bank') AS SIGNED)
- CAST(JSON_EXTRACT(old.accounts, '$.bank') AS SIGNED) AS gained
FROM fivem.users AS live
JOIN restore_check.users AS old ON old.identifier = live.identifier
ORDER BY gained DESC
LIMIT 20;Troque $.bank por $.cash ($.money no ESX) para conferir o dinheiro em mãos. Personagens criados depois do backup não aparecem nessa lista, então olhe para eles à parte. Se o saldo do cheater no backup parece normal, é um bom ponto de restauração. Se ali ele já está enorme, volte mais um backup.
A mesma consulta mostra para quem o cheater mandou o dinheiro. Um jogador que ganhou alguns milhões em uma hora sem um emprego que pague tudo isso geralmente é para onde o dinheiro foi.
Por que a frequência dos backups decide quanto você perde
Um rollback leva cada jogador de volta ao momento do backup, então tudo o que ele fez depois também se perde. Com um backup por noite às 04:00 e um exploit descoberto às 21:00, a cidade inteira perde 17 horas de jogo. Com um backup a cada hora, perde menos de uma.
Por isso o tempo entre o exploit e o momento em que você percebe conta tanto quanto o próprio backup. Alertas que avisam em minutos mantêm o rollback curto.
Rollback em todo mundo ou só em alguns jogadores
Dê rollback no banco inteiro quando as cópias se espalharam: muitos jogadores estão envolvidos, o bug atingiu a economia toda ou você não sabe quem tem o quê. Todo mundo perde as mesmas poucas horas, mas a economia fica limpa de novo.
Restaure só alguns jogadores quando foram uma ou duas pessoas e as cópias não foram longe. Você devolve as linhas deles a partir do backup e mais ninguém perde nada. Restaurar o inventário de um jogador mostra como, com SQL para ESX e QBCore.
Restaurar só o cheater enquanto as cópias dele estão no inventário de outros jogadores deixa o dupe no jogo. Veja para onde foram os itens e o dinheiro antes de escolher esse caminho.
Como os backups do FiveDock resolvem isso
O FiveDock faz tudo isso pelo painel, através do agente que já roda no seu servidor para a CDN e o resto. Cada backup é criptografado na sua máquina com uma chave que a gente nunca vê.
Preços e a lista completa do que vem em cada plano estão em preços. Se quiser ver como fazer e testar esses backups na mão, leia como fazer backup de um servidor de FiveM.
Antes de ligar o servidor de novo
Feche o buraco primeiro. Se o exploit veio de um script, pare esse resource ou corrija antes do restart, senão vai acontecer de novo em menos de uma hora. Num evento de dinheiro, quem decide o valor é sempre o servidor, nunca o cliente:
-- Exploitable: the client decides how much it gets paid
RegisterNetEvent('delivery:pay', function(amount)
local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.addMoney(amount)
end)
-- Safe: the server decides the amount and checks the job was done
local PAY = 450
local onDelivery = {} -- set by the server when it hands out a job
RegisterNetEvent('delivery:finish', function()
local src = source
if not onDelivery[src] then return end
onDelivery[src] = nil
ESX.GetPlayerFromId(src).addMoney(PAY)
end)Perguntas frequentes
Até onde dar rollback no FiveM depois de um dupe?
Até o backup mais recente feito antes do primeiro evento explorado, não antes de você perceber. Carregue primeiro num banco separado e confira se o saldo e os itens do cheater parecem normais ali.
Os jogadores perdem progresso se eu der rollback no banco?
Perdem, tudo desde o backup. Com backups de hora em hora é menos de uma hora; com um por noite pode ser quase um dia inteiro. Se só alguns jogadores estavam envolvidos, restaure só as linhas deles.
Um cheater deu dinheiro para si mesmo. É só tirar?
Só se o dinheiro nunca saiu do personagem dele. Normalmente já virou carros e casas ou foi para a conta de outros jogadores, e tirar de uma linha deixa o resto. Voltar para um backup de antes é mais rápido e pega tudo.
O txAdmin consegue dar rollback no banco de dados?
Não. O txAdmin cuida do processo do servidor, dos bans e do histórico dos jogadores, mas não faz backup nem restaura o seu banco MySQL ou MariaDB. Para isso você precisa de mysqldump agendado ou de uma ferramenta como o FiveDock.
Os backups do FiveDock vêm no plano gratuito?
Vêm. O Free faz um backup por dia, guarda por 7 dias e consegue restaurar o banco inteiro. Backups de hora em hora, alertas de itens duplicados e a restauração de um jogador só são do Metro.