› Foros › PlayStation 3 › Scene
"This package of tools can encrypt and decrypt any file type, you can use you own key so no one can decrypt it. Unless they know the key. Note** you can only decrypt files that are encrypted that you did not create if you know the key for it, you cant randomly create a key and try to use it to decrypt it. There is and example folder inside the download too."
The USAGE:
Encrypter:
<Encrypter.exe> <input> <output> : <The Key you want>
____________________________________________________
Decrypter:
<Decrypter.exe> <input> <output> : <The Key you entered in the encryptor>
Note -- if the file has and extension on it ex: example.txt, you must add the .txt.
The Decrypter will say it was decrypted successfully but if you did not enter the right key you will get a file damage error, So enter the right key (One you use to encrypt the file with)
Frange escribió:El scener PsDev ha sacado unas herramientas para (segun comenta) encriptar y desencriptar cualquier fichero firmandolo con tu propia Key o si tienes la llave de otra cosa decirle al lv0 que lo haga por ti."This package of tools can encrypt and decrypt any file type, you can use you own key so no one can decrypt it. Unless they know the key. Note** you can only decrypt files that are encrypted that you did not create if you know the key for it, you cant randomly create a key and try to use it to decrypt it. There is and example folder inside the download too."
INSTRUCCIONES EN INGLES:The USAGE:
Encrypter:
<Encrypter.exe> <input> <output> : <The Key you want>
____________________________________________________
Decrypter:
<Decrypter.exe> <input> <output> : <The Key you entered in the encryptor>
Note -- if the file has and extension on it ex: example.txt, you must add the .txt.
The Decrypter will say it was decrypted successfully but if you did not enter the right key you will get a file damage error, So enter the right key (One you use to encrypt the file with)
HERRAMIENTAS: http://www.2shared.com/file/i2ZIdtHW/Cypter_tools.html
Fuente: psx-scene.com
psn_hypervisor
psn_hypervisor escribió:Encriptar o desencriptar FIRMANDO?
Lo primero es que encriptar o desencriptar nada tiene que ver con el proceso de firmado, y segundo, no dice nada del lv0
Un saludo
Frange escribió:psn_hypervisor escribió:Encriptar o desencriptar FIRMANDO?
Lo primero es que encriptar o desencriptar nada tiene que ver con el proceso de firmado, y segundo, no dice nada del lv0
Un saludo
lo del lv0 lo comentan en la fuente, busca
int __cdecl sub_4115F0(LPCSTR lpFileName, const CHAR *a2, LPCSTR pbData)
{
void *v3; // eax@2
int v4; // edx@3
int v5; // eax@3
int v6; // eax@6
int v7; // eax@9
int v8; // eax@14
int v9; // eax@19
int v10; // eax@21
BYTE *v11; // eax@23
int v12; // eax@24
int v13; // eax@30
int v14; // eax@33
int v15; // eax@36
int v16; // eax@38
int v17; // eax@42
DWORD v18; // eax@41
int v19; // eax@45
int v20; // eax@48
int v21; // eax@53
int v22; // eax@57
int v23; // eax@59
int v24; // eax@70
int v25; // eax@74
int v26; // eax@77
int v28; // ST18_4@78
int v29; // ecx@78
char v30; // [sp+Ch] [bp-168h]@1
unsigned __int8 v31; // [sp+D3h] [bp-A1h]@50
DWORD NumberOfBytesWritten; // [sp+DCh] [bp-98h]@35
DWORD dwBufLen; // [sp+E8h] [bp-8Ch]@49
DWORD nNumberOfBytesToRead; // [sp+F4h] [bp-80h]@49
void *Memory; // [sp+100h] [bp-74h]@1
DWORD Size; // [sp+10Ch] [bp-68h]@22
BYTE *lpBuffer; // [sp+118h] [bp-5Ch]@1
HCRYPTHASH hHash; // [sp+124h] [bp-50h]@1
HCRYPTKEY hExpKey; // [sp+130h] [bp-44h]@1
HCRYPTKEY hKey; // [sp+13Ch] [bp-38h]@1
HCRYPTPROV hProv; // [sp+148h] [bp-2Ch]@1
HANDLE hFile; // [sp+154h] [bp-20h]@1
HANDLE hObject; // [sp+160h] [bp-14h]@1
char v44; // [sp+16Fh] [bp-5h]@1
int v45; // [sp+174h] [bp+0h]@78
memset(&v30, -858993460, 0x168u);
v44 = 0;
hObject = (HANDLE)-1;
hFile = (HANDLE)-1;
hProv = 0;
hKey = 0;
hExpKey = 0;
hHash = 0;
lpBuffer = 0;
Memory = 0;
CreateFileA(lpFileName, 1u, 1u, 0, 3u, 0x80u, 0);
hObject = (HANDLE)((int (*)(void))sub_41117C)();
if ( hObject == (HANDLE)-1 )
{
GetLastError();
v5 = ((int (*)(void))sub_41117C)();
sub_41119F("Error opening plaintext file!\n", v5);
goto LABEL_62;
}
printf("The plaintext file, %s, is open. \n", lpFileName);
((void (*)(void))sub_41117C)();
CreateFileA(a2, 2u, 1u, 0, 4u, 0x80u, 0);
v3 = (void *)((int (*)(void))sub_41117C)();
hFile = v3;
if ( v3 == (void *)-1 )
{
GetLastError();
v6 = ((int (*)(void))sub_41117C)();
sub_41119F("Error opening ecrypted file!\n", v6);
goto LABEL_62;
}
printf("The encryption file, %s, is open. \n", a2);
((void (*)(void))sub_41117C)();
CryptAcquireContextA(&hProv, 0, "Microsoft Enhanced Cryptographic Provider v1.0", 1u, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v7 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during Crypto!\n", v7);
goto LABEL_62;
}
printf("A crypto has been acquired. \n");
((void (*)(void))sub_41117C)();
if ( pbData && *pbData )
{
CryptCreateHash(hProv, 0x8003u, 0, 0, &hHash);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v17 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptCreateHash!\n", v17);
goto LABEL_62;
}
printf("A hash object has been created. \n");
((void (*)(void))sub_41117C)();
lstrlenA(pbData);
v18 = ((int (*)(void))sub_41117C)();
CryptHashData(hHash, (const BYTE *)pbData, v18, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v19 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptHashData. \n", v19);
goto LABEL_62;
}
printf("The key has been added to the hash. \n");
((void (*)(void))sub_41117C)();
CryptDeriveKey(hProv, 0x6801u, hHash, 0x800000u, &hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v20 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDeriveKey!\n", v20);
goto LABEL_62;
}
printf("An encryption key is derived from the password hash. \n");
((void (*)(void))sub_41117C)();
}
else
{
CryptGenKey(hProv, 0x6801u, 0x800001u, &hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v8 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptGenKey. \n", v8);
goto LABEL_62;
}
printf("A key has been created. \n");
((void (*)(void))sub_41117C)();
CryptGetUserKey(hProv, 1u, &hExpKey);
if ( ((int (*)(void))sub_41117C)() )
{
printf("The user public key has been retrieved. \n");
((void (*)(void))sub_41117C)();
}
else
{
GetLastError();
if ( ((int (*)(void))sub_41117C)() != -2146893811 )
{
GetLastError();
v10 = ((int (*)(void))sub_41117C)();
sub_41119F("User public key is not available and may not exist.\n", v10);
goto LABEL_62;
}
CryptGenKey(hProv, 1u, 1u, &hExpKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v9 = ((int (*)(void))sub_41117C)();
sub_41119F("Could not create a user public key.\n", v9);
goto LABEL_62;
}
}
CryptExportKey(hKey, hExpKey, 1u, 0, 0, &Size);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v12 = ((int (*)(void))sub_41117C)();
sub_41119F("Error BLOB length! \n", v12);
goto LABEL_62;
}
printf("The key BLOB is %d bytes long. \n", Size);
((void (*)(void))sub_41117C)();
malloc(Size);
v11 = (BYTE *)((int (*)(void))sub_41117C)();
lpBuffer = v11;
if ( !v11 )
{
sub_41119F("Out of memory. \n", -2147024882);
goto LABEL_62;
}
printf("Memory is allocated for the key BLOB. \n");
((void (*)(void))sub_41117C)();
CryptExportKey(hKey, hExpKey, 1u, 0, lpBuffer, &Size);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v13 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptExportKey!\n", v13);
goto LABEL_62;
}
printf("The key has been exported. \n");
((void (*)(void))sub_41117C)();
if ( hExpKey )
{
CryptDestroyKey(hExpKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v14 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyKey.\n", v14);
goto LABEL_62;
}
hExpKey = 0;
}
WriteFile(hFile, &Size, 4u, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v15 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing header.\n", v15);
goto LABEL_62;
}
printf("A file header has been written. \n");
((void (*)(void))sub_41117C)();
WriteFile(hFile, lpBuffer, Size, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v16 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing header.\n", v16);
goto LABEL_62;
}
printf("The key BLOB has been written to the file. \n");
((void (*)(void))sub_41117C)();
free(lpBuffer);
((void (*)(void))sub_41117C)();
}
nNumberOfBytesToRead = 1000;
dwBufLen = 1008;
malloc(0x3F0u);
Memory = (void *)((int (*)(void))sub_41117C)();
if ( Memory )
{
printf("Memory has been allocated for the buffer. \n");
((void (*)(void))sub_41117C)();
v31 = 0;
do
{
ReadFile(hObject, Memory, nNumberOfBytesToRead, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v21 = ((int (*)(void))sub_41117C)();
sub_41119F("Error reading plaintext!!!\n", v21);
goto LABEL_62;
}
if ( NumberOfBytesWritten < nNumberOfBytesToRead )
v31 = 1;
CryptEncrypt(hKey, 0, v31, 0, (BYTE *)Memory, &NumberOfBytesWritten, dwBufLen);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v22 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptEncrypt. \n", v22);
goto LABEL_62;
}
WriteFile(hFile, Memory, NumberOfBytesWritten, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v23 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing ciphertext.\n", v23);
goto LABEL_62;
}
}
while ( !v31 );
v44 = 1;
}
else
{
sub_41119F("Out of memory. \n", -2147024882);
}
LABEL_62:
if ( hObject )
{
CloseHandle(hObject);
((void (*)(void))sub_41117C)();
}
if ( hFile )
{
CloseHandle(hFile);
((void (*)(void))sub_41117C)();
}
if ( Memory )
{
free(Memory);
((void (*)(void))sub_41117C)();
}
if ( hHash )
{
CryptDestroyHash(hHash);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v24 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyHash.\n", v24);
}
hHash = 0;
}
if ( hKey )
{
CryptDestroyKey(hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v25 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyKey!\n", v25);
}
}
if ( hProv )
{
CryptReleaseContext(hProv, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v26 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptReleaseContext!\n", v26);
}
}
v28 = v4;
sub_41109B(&v45, &dword_411F28);
return sub_41117C(v29, v28);
}
Chechuty escribió:Resumiendo, que le dejado un CD con el Visual Studio, hace 2 aplicaciones sencillas y se cree Dark_Alex
Chechuty escribió:Resumiendo, que le dejado un CD con el Visual Studio, hace 2 aplicaciones sencillas y se cree Dark_Alex
psn_hypervisor escribió:Frange escribió:psn_hypervisor escribió:Encriptar o desencriptar FIRMANDO?
Lo primero es que encriptar o desencriptar nada tiene que ver con el proceso de firmado, y segundo, no dice nada del lv0
Un saludo
lo del lv0 lo comentan en la fuente, busca
¿Que busque que? Lo primero, nada de ordenes a mi.
Lo segundo, antes de postear lee bien los comentarios de la gente de esa noticia:
Te pongo uno:
"Whenever I see this guy's name I think at CFW FOLDER Checker (whatever)... and I always end up with a stupid grin over my face
I might even think at a great application to post for this contest myself... It will be called "Useless Crap of Magic PS3" - UCMPS3
Now, I respect everyone's work, I know that making free applications for someone is hard, and the biggest reward we get as developers is the people's gratitude!
YES, I respect your work, but making a program that adds 1+1 endlessly, and posting it over the net won't get anyone's attention!
OH, and if you ever wonder why I bash this guy this much: You can do what this program does with one line of code! ONE LINE!
I'm a little rusty, more than 7 yrs break from programming but I'm sure that encryption routines are embedded in every major programming language"
Entiendo que quieras informar de algo que sale deprisa y corriendo y ser el primero que informa de ello...si...
Es solo mi opinion, quitando el offtopic, y por una vez voy a poner un codigo largo, si, es la funcion que este programa usa para encriptar, crea una key RC4, deriva y saca una publica (en estructura BLOB), hace un hash, etc.int __cdecl sub_4115F0(LPCSTR lpFileName, const CHAR *a2, LPCSTR pbData)
{
void *v3; // eax@2
int v4; // edx@3
int v5; // eax@3
int v6; // eax@6
int v7; // eax@9
int v8; // eax@14
int v9; // eax@19
int v10; // eax@21
BYTE *v11; // eax@23
int v12; // eax@24
int v13; // eax@30
int v14; // eax@33
int v15; // eax@36
int v16; // eax@38
int v17; // eax@42
DWORD v18; // eax@41
int v19; // eax@45
int v20; // eax@48
int v21; // eax@53
int v22; // eax@57
int v23; // eax@59
int v24; // eax@70
int v25; // eax@74
int v26; // eax@77
int v28; // ST18_4@78
int v29; // ecx@78
char v30; // [sp+Ch] [bp-168h]@1
unsigned __int8 v31; // [sp+D3h] [bp-A1h]@50
DWORD NumberOfBytesWritten; // [sp+DCh] [bp-98h]@35
DWORD dwBufLen; // [sp+E8h] [bp-8Ch]@49
DWORD nNumberOfBytesToRead; // [sp+F4h] [bp-80h]@49
void *Memory; // [sp+100h] [bp-74h]@1
DWORD Size; // [sp+10Ch] [bp-68h]@22
BYTE *lpBuffer; // [sp+118h] [bp-5Ch]@1
HCRYPTHASH hHash; // [sp+124h] [bp-50h]@1
HCRYPTKEY hExpKey; // [sp+130h] [bp-44h]@1
HCRYPTKEY hKey; // [sp+13Ch] [bp-38h]@1
HCRYPTPROV hProv; // [sp+148h] [bp-2Ch]@1
HANDLE hFile; // [sp+154h] [bp-20h]@1
HANDLE hObject; // [sp+160h] [bp-14h]@1
char v44; // [sp+16Fh] [bp-5h]@1
int v45; // [sp+174h] [bp+0h]@78
memset(&v30, -858993460, 0x168u);
v44 = 0;
hObject = (HANDLE)-1;
hFile = (HANDLE)-1;
hProv = 0;
hKey = 0;
hExpKey = 0;
hHash = 0;
lpBuffer = 0;
Memory = 0;
CreateFileA(lpFileName, 1u, 1u, 0, 3u, 0x80u, 0);
hObject = (HANDLE)((int (*)(void))sub_41117C)();
if ( hObject == (HANDLE)-1 )
{
GetLastError();
v5 = ((int (*)(void))sub_41117C)();
sub_41119F("Error opening plaintext file!\n", v5);
goto LABEL_62;
}
printf("The plaintext file, %s, is open. \n", lpFileName);
((void (*)(void))sub_41117C)();
CreateFileA(a2, 2u, 1u, 0, 4u, 0x80u, 0);
v3 = (void *)((int (*)(void))sub_41117C)();
hFile = v3;
if ( v3 == (void *)-1 )
{
GetLastError();
v6 = ((int (*)(void))sub_41117C)();
sub_41119F("Error opening ecrypted file!\n", v6);
goto LABEL_62;
}
printf("The encryption file, %s, is open. \n", a2);
((void (*)(void))sub_41117C)();
CryptAcquireContextA(&hProv, 0, "Microsoft Enhanced Cryptographic Provider v1.0", 1u, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v7 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during Crypto!\n", v7);
goto LABEL_62;
}
printf("A crypto has been acquired. \n");
((void (*)(void))sub_41117C)();
if ( pbData && *pbData )
{
CryptCreateHash(hProv, 0x8003u, 0, 0, &hHash);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v17 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptCreateHash!\n", v17);
goto LABEL_62;
}
printf("A hash object has been created. \n");
((void (*)(void))sub_41117C)();
lstrlenA(pbData);
v18 = ((int (*)(void))sub_41117C)();
CryptHashData(hHash, (const BYTE *)pbData, v18, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v19 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptHashData. \n", v19);
goto LABEL_62;
}
printf("The key has been added to the hash. \n");
((void (*)(void))sub_41117C)();
CryptDeriveKey(hProv, 0x6801u, hHash, 0x800000u, &hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v20 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDeriveKey!\n", v20);
goto LABEL_62;
}
printf("An encryption key is derived from the password hash. \n");
((void (*)(void))sub_41117C)();
}
else
{
CryptGenKey(hProv, 0x6801u, 0x800001u, &hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v8 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptGenKey. \n", v8);
goto LABEL_62;
}
printf("A key has been created. \n");
((void (*)(void))sub_41117C)();
CryptGetUserKey(hProv, 1u, &hExpKey);
if ( ((int (*)(void))sub_41117C)() )
{
printf("The user public key has been retrieved. \n");
((void (*)(void))sub_41117C)();
}
else
{
GetLastError();
if ( ((int (*)(void))sub_41117C)() != -2146893811 )
{
GetLastError();
v10 = ((int (*)(void))sub_41117C)();
sub_41119F("User public key is not available and may not exist.\n", v10);
goto LABEL_62;
}
CryptGenKey(hProv, 1u, 1u, &hExpKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v9 = ((int (*)(void))sub_41117C)();
sub_41119F("Could not create a user public key.\n", v9);
goto LABEL_62;
}
}
CryptExportKey(hKey, hExpKey, 1u, 0, 0, &Size);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v12 = ((int (*)(void))sub_41117C)();
sub_41119F("Error BLOB length! \n", v12);
goto LABEL_62;
}
printf("The key BLOB is %d bytes long. \n", Size);
((void (*)(void))sub_41117C)();
malloc(Size);
v11 = (BYTE *)((int (*)(void))sub_41117C)();
lpBuffer = v11;
if ( !v11 )
{
sub_41119F("Out of memory. \n", -2147024882);
goto LABEL_62;
}
printf("Memory is allocated for the key BLOB. \n");
((void (*)(void))sub_41117C)();
CryptExportKey(hKey, hExpKey, 1u, 0, lpBuffer, &Size);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v13 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptExportKey!\n", v13);
goto LABEL_62;
}
printf("The key has been exported. \n");
((void (*)(void))sub_41117C)();
if ( hExpKey )
{
CryptDestroyKey(hExpKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v14 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyKey.\n", v14);
goto LABEL_62;
}
hExpKey = 0;
}
WriteFile(hFile, &Size, 4u, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v15 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing header.\n", v15);
goto LABEL_62;
}
printf("A file header has been written. \n");
((void (*)(void))sub_41117C)();
WriteFile(hFile, lpBuffer, Size, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v16 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing header.\n", v16);
goto LABEL_62;
}
printf("The key BLOB has been written to the file. \n");
((void (*)(void))sub_41117C)();
free(lpBuffer);
((void (*)(void))sub_41117C)();
}
nNumberOfBytesToRead = 1000;
dwBufLen = 1008;
malloc(0x3F0u);
Memory = (void *)((int (*)(void))sub_41117C)();
if ( Memory )
{
printf("Memory has been allocated for the buffer. \n");
((void (*)(void))sub_41117C)();
v31 = 0;
do
{
ReadFile(hObject, Memory, nNumberOfBytesToRead, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v21 = ((int (*)(void))sub_41117C)();
sub_41119F("Error reading plaintext!!!\n", v21);
goto LABEL_62;
}
if ( NumberOfBytesWritten < nNumberOfBytesToRead )
v31 = 1;
CryptEncrypt(hKey, 0, v31, 0, (BYTE *)Memory, &NumberOfBytesWritten, dwBufLen);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v22 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptEncrypt. \n", v22);
goto LABEL_62;
}
WriteFile(hFile, Memory, NumberOfBytesWritten, &NumberOfBytesWritten, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v23 = ((int (*)(void))sub_41117C)();
sub_41119F("Error writing ciphertext.\n", v23);
goto LABEL_62;
}
}
while ( !v31 );
v44 = 1;
}
else
{
sub_41119F("Out of memory. \n", -2147024882);
}
LABEL_62:
if ( hObject )
{
CloseHandle(hObject);
((void (*)(void))sub_41117C)();
}
if ( hFile )
{
CloseHandle(hFile);
((void (*)(void))sub_41117C)();
}
if ( Memory )
{
free(Memory);
((void (*)(void))sub_41117C)();
}
if ( hHash )
{
CryptDestroyHash(hHash);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v24 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyHash.\n", v24);
}
hHash = 0;
}
if ( hKey )
{
CryptDestroyKey(hKey);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v25 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptDestroyKey!\n", v25);
}
}
if ( hProv )
{
CryptReleaseContext(hProv, 0);
if ( !((int (*)(void))sub_41117C)() )
{
GetLastError();
v26 = ((int (*)(void))sub_41117C)();
sub_41119F("Error during CryptReleaseContext!\n", v26);
}
}
v28 = v4;
sub_41109B(&v45, &dword_411F28);
return sub_41117C(v29, v28);
}
Si se sabe programar para Windows, se sabe que API se estan usando muy rapido.
No tengo nada mas que decir del tema.
Un saludo
campa1980 escribió:hola. por lo que he leido se sigue igual. se desprestigia el trabajo de los demas y solo se pide que se saquen cosas para jugar a los juegos pirata. de que vais? que pasa, que el homebrew no es scene? que pasa, que a gente crea aplicaciones que no valen para nada solo para malgastar su tiempo?
solo espero, como digo siempre, que no vuelvan a sacar nada mas. OS LO MERECEIS ! ! !
campa1980 escribió:hola. por lo que he leido se sigue igual. se desprestigia el trabajo de los demas y solo se pide que se saquen cosas para jugar a los juegos pirata. de que vais? que pasa, que el homebrew no es scene? que pasa, que a gente crea aplicaciones que no valen para nada solo para malgastar su tiempo?
solo espero, como digo siempre, que no vuelvan a sacar nada mas. OS LO MERECEIS ! ! !