//coded by IMPosTOR //impostor@de-compiler.me //www.de-compiler.me var Glob1,Glob2: string; Global_Result : boolean = false; function Random_Serial(PLen,Mode: Integer): string; var char: string; begin if mode > 6 then begin Result := 'Error : PLen > 6 .'; exit; end; Randomize; case mode of 0 : char := '1234657890'; 1 : char := '1234657890abcdefghijklmnopqrstuvwxyz'; 2 : char := '123465789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';// 0 and o removed ! 3 : char := 'abcdefghijklmnopqrstuvwxyz'; 4 : char := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 5 : char := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 6 : char := '123465789ABCDEFGHIJKLMNPQRSTUVWXYZ';// 0 and o removed ! end; result := ''; repeat result := result + Char[Random(Length(Char)) + 1]; until (Length(result) = PLen) end; function Generate_Serial_by_IMPosTOR(User_Name,Random_Se: string): string; var i,k,l : integer; m1,m2 : integer; p1 : array [1..32] of word; p2,p3 : string; a,b : string; c,d,e : integer; un : string; ln : integer; p4 : array [1..15] of word; y1,y2 : string; eax_,edx_,ecx_ : integer; _eax_,_ecx_ : integer; b1,b2,b3,b4,b5 : integer; x1,x2,x3,x4,x5,x6,x7 : integer; begin result := 'Error : 01'; //[ Part 01 ]-------------------------------------------------------[ Part 01 ] a := '123456789ABCDEFGHIJKLMNPQRSTUVWXYZ';// o and 0 removed ! m1 := $22; for i := 1 to length(Random_Se) do begin m2 := pos(Random_Se[i],a) - 1; for k := 1 to $20 do begin ecx_ := p1[k] and $FF; ecx_ := ecx_ * m1; ecx_ := ecx_ + eax_; p1[k] := ecx_ and $FF; if (ecx_) >= ($100) then begin eax_ := ecx_; asm sar eax_,$8 end; end else begin eax_ := 0; end; end; for l := 1 to $20 do begin ecx_ := p1[l] and $FF; edx_ := ecx_; ecx_ := m2; ecx_ := ecx_ and $FF; eax_ := eax_ + edx_; ecx_ := ecx_ + eax_; m2 := 0; p1[l] := ecx_ and $FF; if (ecx_ )>= $100 then begin eax_ := ecx_; edx_ := 0; //Don't remove it! :D asm sar eax_, $8 end; end else begin eax_ := 0; end; end; end; b := sbinttohex(p1[16],2,0) + sbinttohex(p1[15],2,0); c := hextoint(b); d := c and $7FFF; //[ Part 02 ]-------------------------------------------------------[ Part 02 ] p2 := sbinttohex(p1[01],2,0) + sbinttohex(p1[02],2,0) + sbinttohex(p1[03],2,0) + sbinttohex(p1[04],2,0) + sbinttohex(p1[05],2,0) + sbinttohex(p1[06],2,0) + sbinttohex(p1[07],2,0) + sbinttohex(p1[08],2,0) + sbinttohex(p1[09],2,0) + sbinttohex(p1[10],2,0) + sbinttohex(p1[11],2,0) + sbinttohex(p1[12],2,0) + sbinttohex(p1[13],2,0) + sbinttohex(p1[14],2,0); if length(User_Name) < 16 then begin ln := length(User_Name); for i := 1 to (16 div ln) + 1 do begin un := un + User_Name + char($00); end; User_Name := copy(un,0,16); end; p3 := User_Name + hextostr(p2[01] + p2[02]) + hextostr(p2[03] + p2[04]) + hextostr(p2[05] + p2[06]) + hextostr(p2[07] + p2[08]) + hextostr(p2[09] + p2[10]) + hextostr(p2[11] + p2[12]) + hextostr(p2[13] + p2[14]) + hextostr(p2[15] + p2[16]) + hextostr(p2[17] + p2[18]) + hextostr(p2[19] + p2[20]) + hextostr(p2[21] + p2[22]) + hextostr(p2[23] + p2[24]) + hextostr(p2[25] + p2[26]) + hextostr(p2[27] + p2[28]) ; asm mov eax, $1E xor ecx, ecx mov edx, eax dec eax test edx, edx je @PowerISO_00445269 push esi lea esi, dword ptr ds:[eax+1] mov eax, p3 @PowerISO_00445245: xor edx, edx mov dh, byte ptr ds:[eax] xor ecx, edx inc eax mov edx, 8 @PowerISO_00445251: test ch, $080 je @PowerISO_00445260 add ecx, ecx xor ecx, $01021 jmp @PowerISO_00445262 @PowerISO_00445260: shl ecx, 1 @PowerISO_00445262: dec edx jnz @PowerISO_00445251 dec esi jnz @PowerISO_00445245 pop esi @PowerISO_00445269: mov al, cl xor edx, edx and eax, $0ff mov dl, ch shl eax, 8 add eax, edx and eax, $7fff mov e,eax end; Glob1 := sbinttohex(e,4,0); Glob2 := sbinttohex(d,4,0); if (Glob1) <> (Glob2) then begin Global_Result := false; exit; end; //[ Part 03 ]-------------------------------------------------------[ Part 03 ] x1 := (ord(User_Name[3])); x2 := x1 and 2; x3 := p1[08]; asm shr x3,1 end; x4 := x3 and 2; if x2 <> x4 then begin Global_Result := false; exit; end; x5 := (ord(User_Name[1])); asm shr x5,2 end; x6 := x5 and 1; x7 := p1[01] and 1; if x6 <> x7 then begin Global_Result := false; exit; end; //[ Part 04 ]-------------------------------------------------------[ Part 04 ] y1 := sbinttohex(p1[14],2,0) + sbinttohex(p1[13],2,0) + sbinttohex(p1[12],2,0) + sbinttohex(p1[11],2,0) ; y2 := sbinttohex(p1[10],2,0) + sbinttohex(p1[09],2,0) + sbinttohex(p1[08],2,0) + sbinttohex(p1[07],2,0) ; p4[01] := $0B; p4[02] := $10; p4[03] := $1A; p4[04] := $1E; p4[05] := $23; p4[06] := $25; p4[07] := $26; p4[08] := $36; p4[09] := $38; p4[10] := $3D; p4[11] := $0B; p4[12] := $0D; p4[13] := $1F; p4[14] := $29; p4[15] := $2F; _eax_ := 0; for i := 1 to $0A do begin _ecx_ := p4[i]; if (_ecx_) <= ($020) then begin b1 := hextoint(y2) shr (p4[i] and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end else begin _ecx_ := _ecx_ - $20; b1 := hextoint(y1) shr (_ecx_ and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end; end; for i := 1 to $5 do begin _ecx_ := p4[10 + i]; b4 := (_eax_) div (_ecx_); b5 := b4 * _ecx_; if _eax_ = b5 then begin Global_Result := false; exit; end; end; //[ Part 05 ]-------------------------------------------------------[ Part 05 ] p4[01] := $00; p4[02] := $03; p4[03] := $04; p4[04] := $06; p4[05] := $08; p4[06] := $0A; p4[07] := $15; p4[08] := $22; p4[09] := $2C; p4[10] := $30; p4[11] := $0D; p4[12] := $11; p4[13] := $17; p4[14] := $1D; p4[15] := $29; _eax_ := 0; b1 := 0; b2 := 0; b3 := 0; b4 := 0; b5 := 0; for i := 1 to $0A do begin _ecx_ := p4[i]; if (_ecx_) <= ($020) then begin b1 := hextoint(y2) shr (p4[i] and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end else begin _ecx_ := _ecx_ - $20; b1 := hextoint(y1) shr (_ecx_ and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end; end; for i := 1 to $5 do begin _ecx_ := p4[10 + i]; b4 := (_eax_) div (_ecx_); b5 := b4 * _ecx_; if _eax_ = b5 then begin Global_Result := false; exit; end; end; //[ Part 06 ]-------------------------------------------------------[ Part 06 ] p4[01] := $07; p4[02] := $08; p4[03] := $12; p4[04] := $21; p4[05] := $23; p4[06] := $24; p4[07] := $26; p4[08] := $28; p4[09] := $2D; p4[10] := $37; p4[11] := $29; p4[12] := $59; p4[13] := $95; p4[14] := $E3; p4[15] := $F1; _eax_ := 0; b1 := 0; b2 := 0; b3 := 0; b4 := 0; b5 := 0; for i := 1 to $0A do begin _ecx_ := p4[i]; if (_ecx_) <= ($020) then begin b1 := hextoint(y2) shr (p4[i] and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end else begin _ecx_ := _ecx_ - $20; b1 := hextoint(y1) shr (_ecx_ and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end; end; for i := 1 to $5 do begin _ecx_ := p4[10 + i]; b4 := (_eax_) div (_ecx_); b5 := b4 * _ecx_; if _eax_ = b5 then begin Global_Result := false; exit; end; end; //[ Part 07 ]-------------------------------------------------------[ Part 07 ] p4[01] := $03; p4[02] := $08; p4[03] := $16; p4[04] := $1F; p4[05] := $27; p4[06] := $2B; p4[07] := $32; p4[08] := $33; p4[09] := $39; p4[10] := $3F; p4[11] := $29; p4[12] := $49; p4[13] := $B3; p4[14] := $BF; p4[15] := $E3; _eax_ := 0; b1 := 0; b2 := 0; b3 := 0; b4 := 0; b5 := 0; for i := 1 to $0A do begin _ecx_ := p4[i]; if (_ecx_) <= ($020) then begin b1 := hextoint(y2) shr (p4[i] and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end else begin _ecx_ := _ecx_ - $20; b1 := hextoint(y1) shr (_ecx_ and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end; end; for i := 1 to $5 do begin _ecx_ := p4[10 + i]; b4 := (_eax_) div (_ecx_); b5 := b4 * _ecx_; if _eax_ = b5 then begin Global_Result := false; exit; end; end; //[ Part 08 ]-------------------------------------------------------[ Part 08 ] p4[01] := $09; p4[02] := $0B; p4[03] := $0F; p4[04] := $14; p4[05] := $19; p4[06] := $1C; p4[07] := $33; p4[08] := $37; p4[09] := $38; p4[10] := $3C; p4[11] := $1F; p4[12] := $65; p4[13] := $7F; p4[14] := $8B; p4[15] := $FB; _eax_ := 0; b1 := 0; b2 := 0; b3 := 0; b4 := 0; b5 := 0; for i := 1 to $0A do begin _ecx_ := p4[i]; if (_ecx_) <= ($020) then begin b1 := hextoint(y2) shr (p4[i] and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end else begin _ecx_ := _ecx_ - $20; b1 := hextoint(y1) shr (_ecx_ and $FF); _eax_ := _eax_ + _eax_; b2 := b1 and 1; b3 := b2 or _eax_; _eax_ := b3; end; end; for i := 1 to $5 do begin _ecx_ := p4[10 + i]; b4 := (_eax_) div (_ecx_); b5 := b4 * _ecx_; if _eax_ = b5 then begin Global_Result := false; exit; end; end; //[ Final Part ]-------------------------------------------------[ Final Part ] insert('-',Random_Se,06); insert('-',Random_Se,12); insert('-',Random_Se,18); insert('-',Random_Se,24); result := Random_Se; Global_Result := true; end; procedure Call_GSerial; var RaSerial : string; Final : string; UN : string; UpTime,UpTimeAfterSleep : integer; ETime : string; begin UpTime := GetTickCount; EnableWindow(GetDlgItem(Global_Hwnd, IDC_Generate), false); EnableWindow(GetDlgItem(Global_Hwnd, IDC_Exit), false); SetDlgItemText(Global_Hwnd, IDC_Serial, Pchar('Calculating , Please wait ...')); GetDlgItemText(Global_Hwnd, IDC_Username, Clusername , MAX_PATH); UN := Clusername; if (length(UN) < 4) or (length(UN) > 16) then begin SetDlgItemText(Global_Hwnd, IDC_Serial, Pchar('Wtf ? ...')); EnableWindow(GetDlgItem(Global_Hwnd, IDC_Generate), true); EnableWindow(GetDlgItem(Global_Hwnd, IDC_Exit), true); exit; end; repeat RaSerial := Random_Serial(25,6); Final := Generate_Serial_by_IMPosTOR(Clusername,RaSerial); until (Global_Result = true); SetDlgItemText(Global_Hwnd, IDC_Serial, Pchar(Final)); UpTimeAfterSleep := GetTickCount; if ((UpTimeAfterSleep - UpTime)) < 1000 then ETime := '0 s,' + Inttostr((UpTimeAfterSleep - UpTime)div 100) + ' ms' else ETime := Inttostr((UpTimeAfterSleep - UpTime)div 1000) + ' s,' + Inttostr(((UpTimeAfterSleep - UpTime) div 100)) + ' ms'; SetDlgItemText(Global_Hwnd, IDC_License, Pchar('Calculation Time : ' + ETime)); EnableWindow(GetDlgItem(Global_Hwnd, IDC_Generate), true); EnableWindow(GetDlgItem(Global_Hwnd, IDC_Exit), true); end; ------------ Call : ------------ CreateThread(nil, 0, @Call_GSerial, nil, 0, ThreadID);