Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!
 Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda
 Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...
 Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.

Cost abonament clinica privata
 

Algoritm sistem licentiere

- - - - -
  • Please log in to reply
38 replies to this topic

#37
politete

politete

    Junior Member

  • Grup: Junior Members
  • Posts: 40
  • Înscris: 02.06.2017
salut,
indiferent de metoda de protectie pe care o alegi, codul care ruleaza pe calculatorul celor carora le vei da programul il poti compila astfel incat executabilul sa difere de la om la om, insa sa faca acelasi lucru. depinde si de limbajul de programare sau de compilator, si inca de alti factori. uite ceva in pascal

var a,b:integer;

function scriere(a,b:integer):integer;forward;
procedure schimb(var a,b:integer);forward;
procedure citire_a(var a:integer);forward;
procedure citire_b(var b:integer);forward;

function scriere(a,b:integer):integer;
begin
	writeln('a=',a);
	writeln('b=',B);
end;

procedure schimb(var a,b:integer);
var temp:integer;
begin
	temp:=a;
	a:=b;
	b:=temp;
end;

procedure citire_a(var a:integer);
begin
	readln(a);
end;

procedure citire_b(var b:integer);
begin
	readln(B);
end;

begin
	citire_a(a);
	citire_b(B);
	scriere(a,B);
	schimb(a,B);
	scriere(a,B);
end.


codul respectiv poate fi compilat rezultand executabile diferite care insa fac acelasi lucru, prin permutarea procedurilor si functiilor. adica in loc sa scrii functia de scriere prima, o scrii dupa procedura citire_a. executabilele vor avea codul procedurilor in cauza in alte adrese de memorie unul fata de altul. in functie de nr persoanelor carora le dai executabile si mijlocul prin care le dai, poti face permutarile manual sau automat. uite ceva automat tot in pascal, lucrand pe fisierul de mai sus:

{$mode objfpc}
uses
  Classes, SysUtils;
var
  textul: TStringList;
  i,pozitia,nr_beginuri,j,linii_text,a,b:integer;
  v:array[1..100]of tstringlist;
  stiva:array[1..100] of integer;
  n,k,contorul:integer;

procedure pune_in_vector(i,j:integer);
var contor:integer;
begin
	inc(pozitia);
	v[pozitia]:=tstringlist.create;
	for contor:=i to j do
		v[pozitia].add(textul[contor]);
	if a=-1 then
		a:=i
	else
		b:=j;
end;

procedure sterge_text;
begin
	for i:=a to b do
		textul.delete(a);
end;

procedure init(k:integer);
begin
	stiva[k]:=0;
end;

function succesor(k:integer):boolean;
begin
	if stiva[k]<n then begin
		inc(stiva[k]);
		succesor:=true
	end
	else
		succesor:=false;
end;

function valid(k:integer):boolean;
var i:integer;
begin
	valid:=true;
	for i:=1 to k-1 do
		if stiva[k]=stiva[i] then
			valid:=false;
end;

function solutie(k:integer):boolean;
begin
	if k=n then
		solutie:=true
	else
		solutie:=false;
end;

procedure afisaj;
var i,j,a1,nr:integer;
begin
	a1:=a-1;
	inc(contorul);
	for i:=1 to n do begin
		nr:=stiva[i];
		for j:=v[nr].count-1 downto 0 do
			textul.insert(a1,v[nr].strings[j]);
		textul.insert(a1,'');
		a1:=a1+v[nr].count+1;
	end;
	textul.delete(a1);
	textul.SaveToFile('program'+inttostr(contorul)+'.pas');
	sterge_text;
end;

procedure permutari;
begin
	n:=pozitia;
	k:=1;
	init(k);
	while k>0 do begin
		while succesor(k) do
			if valid(k) then
				if solutie(k) then
					afisaj
				else begin
					inc(k);
					init(k);
				end;
		dec(k);
	end;
end;

begin
	pozitia:=0;
	a:=-1;
	contorul:=0;
	textul := TStringList.Create;
	textul.LoadFromFile('program.pas');
	linii_text:=textul.count-1;
	for i:=0 to linii_text do
		if (pos('procedure',textul[i])>0) or (pos('function',textul[i])>0) then
			if pos('forward',textul[i])=0 then begin
				nr_beginuri:=0;
				for j:=i to linii_text do
					if pos('end',textul[j])>0 then
						if nr_beginuri=1 then begin
							pune_in_vector(i,j);
							break;
						end
						else
							dec(nr_beginuri)
					else
						if pos('begin',textul[j])>0 then
							inc(nr_beginuri);
			end;
	sterge_text;
	permutari;
	textul.Free;
	writeln('apasa enter');readln;
end.


programul foloseste metoda backtracking pt a face permuratile intre procedurile si functiile declarate in noi fisier. aceste noi fisiere le poti compila automat, rezultand mai multe executabile care fac acelasi lucru dar codul lor difera prin locatia diferita a procedurilor in memorie. aceste permutari ale procedurilor le poti combina cu permutari de variabile sau cu combinari de proceduri si functii scrise in moduri diferite (de exemplu la interschimbarea variabilelor sa folosesti alte metode), cu functii ce returneaza o constanta sau alte metode

#38
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Cu ce-l ajuta?

#39
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
In anumite cazuri sa nu mai mearga aplicatia crack (acum depinde si ce cauta ea).

Mai bine faci un loader custom cu tot felul de criptari/amestecuri si alte giumbuslucuri si pana-i dai de capat te cam saturi.

Edited by neagu_laurentiu, 26 August 2017 - 20:04.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate