Obfuscate et DRM

  • Initiateur de la discussion Membre supprimé 130903
  • Date de début
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
Bonjour,

En faisant des recherches pour sécuriser ses addons je suis tombé sur des gens parlant de DRM. Alors j'ai fait des des recherches j'ai trouvé scriptenforcer mais il a fermé.
Est ce que quelqu'un pourrait m'expliquer ce qu'est un DRM ? Car je n'ai pas très bien compris :oops:

Pour finir j'ai aussi entendu parler d'obfuscation et je suis tombé sur cette vidéo : Obfuscate LUA Script
J'ai donc fait ce qui est décris dans la vidéo j'ai obtenu mon code
Code:
\27\76\117\97\81\0\1\4\8\4\8\0\160\0\0\0\0\0\0\0\108\111\99\97\108\32\115\99\114\105\112\116\32\61\32\115\116\114\105\110\103\46\100\117\109\112\40\10\102\117\110\99\116\105\111\110\40\41\10\112\114\105\110\116\40\34\104\101\108\108\111\32\119\111\114\100\33\34\41\10\101\110\100\10\41\10\10\101\110\99\32\61\32\34\34\10\10\102\111\114\32\118\61\49\44\115\116\114\105\110\103\46\108\101\110\40\115\99\114\105\112\116\41\32\100\111\10\101\110\99\61\101\110\99\46\46\39\92\92\39\46\46\115\116\114\105\110\103\46\98\121\116\101\40\115\99\114\105\112\116\44\118\41\10\101\110\100\10\10\112\114\105\110\116\40\101\110\99\41\0\2\0\0\0\4\0\0\0\0\0\0\2\4\0\0\0\5\0\0\0\65\64\0\0\28\64\0\1\30\0\128\0\2\0\0\0\4\6\0\0\0\0\0\0\0\112\114\105\110\116\0\4\12\0\0\0\0\0\0\0\104\101\108\108\111\32\119\111\114\100\33\0\0\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0

Ma question est comment faire pour que gmod puisse comprendre le code ? Que les filestealer ne puissent pas lire cela car j'ai essayer de mettre loadstring("code") () comme dans la vidéo dans un lua mais ça m'as fait une eurreur.

Voila j'espère avoir été clair
Merci :)

PS : je sais que c'est hyper facile a décrypter mais j'ai trouver que ca pour "crypter"
 
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
16 282
Score réaction
9 687
Points
1 845
Mon serveur est capable de lire ce genre de code correctement , tu obtient une erreur car ton obfuscation est mal faite , de toute facons obfusquer un code rend la tache plus difficile pour le serveur si tu en abuse donc bon..

Code:
hook.Add( "\x50\x6f\x73\x74\x47\x61\x6d\x65\x6d\x6f\x64\x65\x4c\x6f\x61\x64\x65\x64", "\x64\x61\x72\x6b\x72\x70\x5f\x73\x74\x75\x6e\x73\x74\x69\x63\x6b\x5f\x6e\x6f\x72\x6d\x61\x6c\x5f\x63\x6f\x6c\x6f\x72", function() if DarkRP then local ‬‬ = weapons.GetStored( "\x73\x74\x75\x6e\x73\x74\x69\x63\x6b" ) local ‬‬‬‬ = ‬‬.‬‬‬‬ local ‬‬‬‬‬‬ = {} local ‬‬‬‬‬‬‬‬ = function()end for funcName,func in getfenv()["\x70\x61\x69\x72\x73"]( getfenv()["\x46\x69\x6e\x64\x4d\x65\x74\x61\x54\x61\x62\x6c\x65"]( "\x49\x4d\x61\x74\x65\x72\x69\x61\x6c" ) ) do if getfenv()["\x69\x73\x66\x75\x6e\x63\x74\x69\x6f\x6e"]( func ) then ‬‬‬‬‬‬[funcName] = ‬‬‬‬‬‬‬‬ end end function ‬‬:‬‬‬‬() local ‬‬‬‬‬‬‬‬‬‬ = ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ function ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬( name, ... ) if name~="\x64\x61\x72\x6b\x72\x70\x2f\x73\x74\x75\x6e\x73\x74\x69\x63\x6b" then return ‬‬‬‬‬‬‬‬‬‬( name, ... ) else return ‬‬‬‬‬‬ end end local ok, err = getfenv()["\x70\x63\x61\x6c\x6c"]( ‬‬‬‬, self ) ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ = ‬‬‬‬‬‬‬‬‬‬ if not ok then getfenv()["\x65\x72\x72\x6f\x72"]( err ) end end end end )
 
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
Yoh Sambre ♪ à dit:
Mon serveur est capable de lire ce genre de code correctement , tu obtient une erreur car ton obfuscation est mal faite , de toute facons obfusquer un code rend la tache plus difficile pour le serveur si tu en abuse donc bon..

Code:
hook.Add( "\x50\x6f\x73\x74\x47\x61\x6d\x65\x6d\x6f\x64\x65\x4c\x6f\x61\x64\x65\x64", "\x64\x61\x72\x6b\x72\x70\x5f\x73\x74\x75\x6e\x73\x74\x69\x63\x6b\x5f\x6e\x6f\x72\x6d\x61\x6c\x5f\x63\x6f\x6c\x6f\x72", function() if DarkRP then local ‬‬ = weapons.GetStored( "\x73\x74\x75\x6e\x73\x74\x69\x63\x6b" ) local ‬‬‬‬ = ‬‬.‬‬‬‬ local ‬‬‬‬‬‬ = {} local ‬‬‬‬‬‬‬‬ = function()end for funcName,func in getfenv()["\x70\x61\x69\x72\x73"]( getfenv()["\x46\x69\x6e\x64\x4d\x65\x74\x61\x54\x61\x62\x6c\x65"]( "\x49\x4d\x61\x74\x65\x72\x69\x61\x6c" ) ) do if getfenv()["\x69\x73\x66\x75\x6e\x63\x74\x69\x6f\x6e"]( func ) then ‬‬‬‬‬‬[funcName] = ‬‬‬‬‬‬‬‬ end end function ‬‬:‬‬‬‬() local ‬‬‬‬‬‬‬‬‬‬ = ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ function ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬( name, ... ) if name~="\x64\x61\x72\x6b\x72\x70\x2f\x73\x74\x75\x6e\x73\x74\x69\x63\x6b" then return ‬‬‬‬‬‬‬‬‬‬( name, ... ) else return ‬‬‬‬‬‬ end end local ok, err = getfenv()["\x70\x63\x61\x6c\x6c"]( ‬‬‬‬, self ) ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ = ‬‬‬‬‬‬‬‬‬‬ if not ok then getfenv()["\x65\x72\x72\x6f\x72"]( err ) end end end end )
Comment est tu arrivé a ce résultat ?
 
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
16 282
Score réaction
9 687
Points
1 845
Bilaboz à dit:
Comment est tu arrivé a ce résultat ?
j'ai bourriné dans ce sens en gros

- obfuscation des variables
- obfuscation des Functions et des Strings
- un peu d'espace dans le code
- sur une seul ligne car c'est drôle
 
  • J'aime
Réactions: Seb et Membre supprimé 130903
ZarosOVH

ZarosOVH

Modérateur
Membre du Staff
Messages
6 527
Score réaction
5 488
Points
1 295
Bilaboz à dit:
Est ce que quelqu'un pourrait m'expliquer ce qu'est un DRM ? Car je n'ai pas très bien compris :oops:
Pour faire très très simple, le but du drm est de "caché" ton code et y limité l’accès

Bilaboz à dit:
Ma question est comment faire pour que gmod puisse comprendre le code ?
Remplace loadstring par CompileString ou RunString ;)

Ce qui donne, par exemple avec ce code:
Code:
local code = "\112\114\105\110\116\40\34\104\116\116\112\115\58\47\47\100\105\115\99\111\114\100\46\103\103\47\84\71\113\104\120\75\110\34\41"
Et pour l’exécution, tu as plusieurs possibilité:
1)
Code:
CompileString(code, "id des erreurs")()
2)
Code:
local exec = CompileString(code, "id des erreurs")
exec()
3)
Code:
RunString(code)
Pour 'crypter' plus facilement tu peux tout simplement utiliser ceci:
Code:
local code = [[print("https://discord.gg/TGqhxKn")]]
local function x(code) return code:gsub(".", function(x) return "\\"..x:byte() end)
end
print(x(code))
 
  • J'aime
Réactions: Membre supprimé 130903 et Yoh Sambre ♪
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
ZarosOVH à dit:
Pour faire très très simple, le but du drm est de "caché" ton code et y limité l’accès


Remplace loadstring par CompileString ou RunString ;)

Ce qui donne, par exemple avec ce code:
Code:
local code = "\112\114\105\110\116\40\34\104\116\116\112\115\58\47\47\100\105\115\99\111\114\100\46\103\103\47\84\71\113\104\120\75\110\34\41"
Et pour l’exécution, tu as plusieurs possibilité:
1)
Code:
CompileString(code, "id des erreurs")()
2)
Code:
local exec = CompileString(code, "id des erreurs")
exec()
3)
Code:
RunString(code)
Pour 'crypter' plus facilement tu peux tout simplement utiliser ceci:
Code:
local code = [[print("https://discord.gg/TGqhxKn")]]
local function x(code) return code:gsub(".", function(x) return "\\"..x:byte() end)
end
print(x(code))

Ah enfait j'obtiens une erreur :/ :

Code:
] lua_openscript_cl test.lua
Running script test.lua...
[ERROR] id des erreurs:1: unexpected symbol near '25' 1. unknown - id des erreurs:0
[ERROR] lua/test.lua:3: attempt to call a nil value 1. unknown - lua/test.lua:3

dans le test.lua :

Code:
local code = "\112\114\105\110\116\40\34\106\97\107\105\32\105\115\32\116\104\101\32\98\101\115\116\34\41 25"
CompileString(code, "id des erreurs")()
local exec = CompileString(code, "id des erreurs")
exec()
RunString(code)
 
ehtr_sky

ehtr_sky

Geek suprême
Messages
271
Score réaction
87
Points
100
Dériver de la fonction run string, avec une fonction de hash pour créer une clé sécrete, et utiliser cette clé avec une fonction de cryptage/décryptage et tu as un truc bien cool (mais toujours limité car pour l'instant un code caché est toujours retrouvable)
 
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
Et aussi pouvoir faire que le code viens d'un http.Fetch. J'ai fait quelques recherches et je suis tombé sur ca mais cela me fait des erreurs ...

Code:
concommand.Add( "debug_game_check", function() local test = "" http.Fetch( "https://pastebin.com/raw/HiP4ZYVh", function( body, len, headers, code ) test = body RunString( test ) end, end )
end )

erreur :
Code:
] lua_openscript_cl test.lua
Running script test.lua...
[ERROR] lua/test.lua:8: unexpected symbol near 'end' 1. unknown - lua/test.lua:0
 
ZarosOVH

ZarosOVH

Modérateur
Membre du Staff
Messages
6 527
Score réaction
5 488
Points
1 295
Bilaboz à dit:
Ah enfait j'obtiens une erreur :/ :

Code:
] lua_openscript_cl test.lua
Running script test.lua...
[ERROR] id des erreurs:1: unexpected symbol near '25' 1. unknown - id des erreurs:0
[ERROR] lua/test.lua:3: attempt to call a nil value 1. unknown - lua/test.lua:3

dans le test.lua :

Code:
local code = "\112\114\105\110\116\40\34\106\97\107\105\32\105\115\32\116\104\101\32\98\101\115\116\34\41 25"
CompileString(code, "id des erreurs")()
local exec = CompileString(code, "id des erreurs")
exec()
RunString(code)
Dans ton code tu as un espace à la fin avant le 25, retire le ;)
 
  • J'aime
Réactions: Membre supprimé 130903
ZarosOVH

ZarosOVH

Modérateur
Membre du Staff
Messages
6 527
Score réaction
5 488
Points
1 295
Bilaboz à dit:
Et aussi pouvoir faire que le code viens d'un http.Fetch. J'ai fait quelques recherches et je suis tombé sur ca mais cela me fait des erreurs ...

Code:
concommand.Add( "debug_game_check", function() local test = "" http.Fetch( "https://pastebin.com/raw/HiP4ZYVh", function( body, len, headers, code ) test = body RunString( test ) end, end )
end )

erreur :
Code:
] lua_openscript_cl test.lua
Running script test.lua...
[ERROR] lua/test.lua:8: unexpected symbol near 'end' 1. unknown - lua/test.lua:0
Tu as un end en trop dans ton code
 
  • J'aime
Réactions: Membre supprimé 130903
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
ZarosOVH à dit:
Dans ton code tu as un espace à la fin avant le 25, retire le ;)
Bizarre c'est le "crypter" qui m'as mit ça de base mais je l'ai réglé merci beaucoup !!

ZarosOVH à dit:
Tu as un end en trop dans ton code
Je vois pas ou il aurai un end en trop
 
ZarosOVH

ZarosOVH

Modérateur
Membre du Staff
Messages
6 527
Score réaction
5 488
Points
1 295
Bilaboz à dit:
Bizarre c'est le "crypter" qui m'as mit ça de base mais je l'ai réglé merci beaucoup !!


Je vois pas ou il aurai un end en trop
Retire le « end, »
 
  • J'aime
Réactions: Membre supprimé 130903
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Bilaboz à dit:
Bizarre c'est le "crypter" qui m'as mit ça de base mais je l'ai réglé merci beaucoup !!


Je vois pas ou il aurai un end en trop
http.fetch ne se ferme pas par un end
 
  • J'aime
Réactions: Membre supprimé 130903
  • Initiateur de la discussion
M

Membre supprimé 130903

Anonyme
Merci beaucoup a tous tout est résolu HeyGuys
 
  • J'aime
Réactions: Yoh Sambre ♪
Discord d'entraide
Rejoignz-nous sur Discord