能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
请把下面的反向个C++源代码,学学看看,
该软件是Flexlm保护的,我跟出SEED是:
03A4B828 00000066 f...
03A4B82C 0055007C |.U.
03A4B830 72F6C35B---------job+08
03A4B834 32FD906A---------job+0c
03A4B838 23376EED---------job+10
03A4B83C 00000000 ....
03A4B840 00000000 .... 0A3EECE4 00000004
0A3EECE8 1A828121------ data[0]
0A3EECEC 3E012BB6------ data[0]
0A3EECF0 C444EFFC D
0A3EECF4 84FCC5EA 昱鼊
0A3EECF8 83328001 €2
0A3EECFC C1300740 @0
0A3EED00 00000000 .... seed1:d912f316
seed2:fd915981
下面是我做的无限授权文件,不是用的注册码。呵呵,也能用。不过我的这个授权是不限电脑的。
<LicenseFile Version="70300226">
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="CA715CA8DC82" IsValid="" ID="{27AF75ED-20D9-11D1-B1CE-00805FC1270E}" Data="[Basic]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="1"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="3A823EA8784A" IsValid="" ID="{94B65A8A-2016-41E4-BF27-0F8B0815A2C2}" Data="[Lite]RSGNR|OBDRSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="F84D48D2706F" IsValid="" ID="{D272DBD7-6452-41B6-8CFF-A368799CCF78}" Data="[Lite]RSGNR|OBDRSGNR|OBD" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="BA04C1FD7429" IsValid="" ID="{7809FD4F-7979-4EE9-B65E-804506281225}" Data="[Lite]" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="E25070CDAFC3" IsValid="" ID="{3E5C0E86-1BDA-4EC6-B71A-9BFBF1C41942}" Data="[Lite]PreProdSupp|NProdSupp|NOBDRSGR|NOBD" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="5EA7001E5A7C" IsValid="" ID="{0E0EBCFB-155C-412C-BB5C-36AF00552664}" Data="[Lite]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="4CF80BA7424A" IsValid="" ID="{32D4EFFB-A380-4969-8AD3-6B32F313AA3D}" Data="[Pro]RSGNR|NoAutomotive" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="36CB7EC4AC89" IsValid="" ID="{E4D40BE9-5DF4-435F-90E7-41EA38A22E00}" Data="[Pro]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="F1DB7A53B7FE" IsValid="" ID="{5C3CD507-3388-42D9-856D-0FAE58710CE9}" Data="[Pro]RSGNR|PreProdSupp|NProdSupp" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
</LicenseFile>
|
能力值:
( LV2,RANK:10 )
|
-
-
请把下面的反向个C++源代码,学学看看,
呵呵,这里高手多啊,就看高手想不想玩了。  /* This file has been generated by the Hex-Rays decompiler.
Copyright (c) 2009 Hex-Rays <info@hex-rays.com>
Detected compiler: Visual C++
*/
#include <windows.h>
//#include <defs.h>
//-------------------------------------------------------------------------
// Data declarations
extern LPCSTR lpString2; // idb
extern char String[]; // idb
extern char byte_402006; // weak
extern char asc_402008[17]; // weak
extern char byte_40201A; // weak
extern char byte_402023[]; // weak
extern int dword_402024; // weak
extern int dword_402028; // weak
extern _UNKNOWN unk_40202C; // weak
extern CHAR Buffer; // idb
extern char AppName[]; // idb
extern char aExpire[]; // idb
extern char KeyName[]; // idb
extern const CHAR byte_40215C; // idb
extern char byte_40215D[]; // weak
extern char byte_402167[24]; // idb
extern char ReturnedString[9]; // idb
extern char String1[]; // idb
extern char aInsite_toollev[24]; // idb
extern char aInsite_usageco[25]; // idb
extern char byte_402209; // weak
extern LPCSTR dword_40226D; // idb
extern LPCSTR lpAppName; // idb
extern char byte_402298[]; // weak
extern char byte_4022A0[]; // weak
extern int dword_4022A5[]; // weak
extern int dword_4022B1[]; // weak
extern char byte_4022E5[]; // weak
extern char byte_4022E6; // weak
extern __int16 word_4022F2; // weak
extern __int16 word_4022F4; // weak
extern char byte_4022F6; // weak
extern char dword_4022F8[]; // idb
extern __int16 word_4022FE; // weak
extern char byte_402302; // weak
extern char byte_402303; // weak
extern int dword_402304; // weak
extern char String2[]; // idb
extern char a2UnableToReadW[47]; // weak
extern char a3IncorrectDate[49]; // weak
extern char asc_402414[]; // idb
//-------------------------------------------------------------------------
// Function declarations
void __cdecl start();
int __stdcall sub_4012A3(int a1);
__int64 __cdecl sub_401385();
__int64 __stdcall sub_40141D(unsigned __int8 a1);
char __cdecl sub_40143D();
unsigned __int8 __stdcall sub_4014D9(int a1, int a2, int a3);
char __stdcall sub_401514(int a1, int a2, int a3);
// int __userpurge sub_401557<eax>(int a1<eax>, int a2, int a3);
unsigned int __cdecl sub_40158F();
// DWORD __stdcall GetPrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
// BOOL __stdcall WritePrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
// LPSTR __stdcall lstrcpyA(LPSTR lpString1, LPCSTR lpString2);
// DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer);
// void __stdcall ExitProcess(UINT uExitCode);
//----- (00401000) --------------------------------------------------------
void __cdecl start()
{
DWORD v0; // eax@1
DWORD v1; // eax@5
int v2; // eax@7
int v3; // eax@7
int v4; // eax@9
int v5; // ecx@13
signed int v6; // ecx@17
void *v7; // edi@17
const void *v8; // esi@17
signed int v9; // ST10_4@18
char v10; // al@19
char v11; // zf@28
int v12; // [sp-4h] [bp-4h]@14
v0 = GetCurrentDirectoryA(0x100u, &Buffer);
if ( v0 )
{
if ( *(&Buffer + v0) != 92 )
*(&Buffer + v0++) = 92;
lstrcpyA(&Buffer + v0, "CODES.INI");
lpString2 = "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))";
if ( GetPrivateProfileStringA("PCID", L"0", &KeyName[2], ReturnedString, 9u, &Buffer) )
{
v1 = GetPrivateProfileStringA("EXPIRE", L"0", &KeyName[2], byte_402167, 0x10u, &Buffer);
if ( v1 )
{
lpString2 = "3 (INCORRECT DATE IN codes.ini PLEASE CHECK IT!)";
if ( v1 == 8 )
{
v3 = *(unsigned __int16 *)byte_402167 << 16;
LOWORD(v3) = *(_WORD *)&byte_402167[3];
*(_DWORD *)dword_4022F8 = v3;
word_4022FE = *(_WORD *)&byte_402167[6];
v2 = sub_401557((unsigned __int16)word_4022FE, (int)byte_402167, (int)&word_4022F2);
if ( (_BYTE)word_4022F2 )
{
if ( (_BYTE)word_4022F2 <= 0x1Fu )
{
v4 = sub_401557(v2, (int)&byte_402167[3], (int)&word_4022F4);
if ( (_BYTE)word_4022F4 )
{
if ( (_BYTE)word_4022F4 <= 0xCu )
{
sub_401557(v4, (int)&byte_402167[6], (int)&byte_4022F6);
if ( byte_4022F6 )
sub_40158F();
sub_401514((int)&asc_402008[16], (int)&asc_402008[16], 3);
lpString2 = "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))";
v5 = 8;
while ( 1 )
{
v12 = v5;
if ( (unsigned int)v5 > 5 )
{
lstrcpyA(String1, "INSITE_USAGECOUNT_LICENSE");
byte_402209 = 27;
}
else
{
lstrcpyA(String1, "INSITE_TOOLLEVEL_LICENSE");
byte_402209 = 26;
}
byte_402303 = byte_4022A0[v12];
sub_4012A3(v12);
sub_401385();
sub_4014D9((int)&dword_402024, (int)&unk_40202C, 6);
v8 = &unk_40202C;
v7 = "----------------";
v6 = 4;
do
{
v9 = v6;
memcpy(v7, v8, 3u);
v8 = (char *)v8 + 3;
v7 = (char *)v7 + 4;
--v6;
}
while ( v9 != 1 );
v10 = byte_40215D[v12];
byte_40215C = byte_40215D[v12];
if ( byte_402209 == 27 )
{
String[0] = v10;
*(_WORD *)&String[1] = 21331;
}
else
{
byte_402006 = v10;
*(_WORD *)String = 12336;
}
if ( dword_402304 == 1 )
{
*(_WORD *)&asc_402008[16] = 12336;
byte_40201A = 48;
}
if ( !WritePrivateProfileStringA((&lpAppName)[4 * dword_402304], &byte_40215C, String, &Buffer) )
break;
v5 = v12 - 1;
if ( v12 == 1 )
{
dword_402304 = 1;
v11 = byte_402302 == 1;
byte_402302 = 1;
v5 = 5;
if ( v11 )
goto LABEL_31;
}
}
}
}
}
}
}
}
}
}
lstrcpyA(" ", lpString2);
LABEL_31:
ExitProcess(0);
}
// 402006: using guessed type char byte_402006;
// 40201A: using guessed type char byte_40201A;
// 402024: using guessed type int dword_402024;
// 402209: using guessed type char byte_402209;
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;
// 4022FE: using guessed type __int16 word_4022FE;
// 402302: using guessed type char byte_402302;
// 402303: using guessed type char byte_402303;
// 402304: using guessed type int dword_402304;
//----- (004012A3) --------------------------------------------------------
int __stdcall sub_4012A3(int a1)
{
LPSTR v1; // eax@1
int v2; // eax@5
char v3; // cl@6
int v4; // eax@8
int v5; // ecx@8
int v6; // eax@12
signed int v7; // ecx@12
int result; // eax@14
v1 = &lstrcpyA(&String1[(unsigned __int8)byte_402209], (&dword_40226D)[4 * a1])[(unsigned __int8)byte_402298[a1]];
if ( byte_402209 == 27 )
{
if ( dword_402304 == 1 )
{
*(_DWORD *)v1 = 825241904;
*((_DWORD *)v1 + 1) = 808464434;
}
else
{
v1 = lstrcpyA(v1, dword_4022F8);
}
v2 = (int)(v1 + 8);
*(_WORD *)v2 = 12883;
v2 += 2;
*(_BYTE *)v2 = 83;
v1 = (LPSTR)(v2 + 1);
}
v3 = 1;
if ( dword_402304 != 1 )
v3 = word_4022F2;
*v1 = v3;
v4 = (int)(v1 + 1);
LOBYTE(v5) = 0;
if ( dword_402304 == 1 )
{
if ( byte_402209 == 27 )
LOBYTE(v5) = 100;
}
else
{
v5 = (unsigned __int8)byte_4022F6 + 100;
}
*(_BYTE *)v4 = v5;
v6 = v4 + 1;
v7 = 1;
if ( dword_402304 != 1 )
v7 = (unsigned __int8)word_4022F4;
*(_DWORD *)v6 = dword_4022B1[v7];
result = v6 + 3;
*(_DWORD *)result = 1943061895;
*(_DWORD *)(result + 4) = 0;
*(_DWORD *)(result + 8) = 0;
return result;
}
// 402209: using guessed type char byte_402209;
// 4022B1: using guessed type int dword_4022B1[];
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;
// 402304: using guessed type int dword_402304;
//----- (00401385) --------------------------------------------------------
__int64 __cdecl sub_401385()
{
int v0; // ecx@1
signed int v1; // ecx@2
int v2; // esi@2
char v3; // al@3
__int64 result; // qax@7
int v5; // [sp-4h] [bp-8h]@2
unsigned __int8 v6; // [sp+0h] [bp-4h]@1
dword_402024 = 0;
dword_402028 = 0;
v6 = 0;
v0 = (unsigned __int8)byte_402303;
do
{
v5 = v0;
v2 = 8 * (v6 + 1) + 4202878;
v1 = 8;
do
{
v3 = *(_BYTE *)v2++;
byte_402023[v1] ^= v3;
--v1;
}
while ( v1 );
if ( !v6 )
{
dword_402024 ^= 0xD912F316u;
dword_402028 ^= 0xFD915981u;
}
++v6;
sub_40143D();
v0 = v5 - 1;
}
while ( v5 != 1 );
LOBYTE(dword_402024) = sub_40141D(BYTE3(dword_402028)) + dword_402024;
result = sub_40141D(BYTE2(dword_402028));
BYTE1(dword_402024) += result;
HIWORD(dword_402028) = 0;
return result;
}
// 402024: using guessed type int dword_402024;
// 402028: using guessed type int dword_402028;
// 402303: using guessed type char byte_402303;
//----- (0040141D) --------------------------------------------------------
__int64 __stdcall sub_40141D(unsigned __int8 a1)
{
__int64 result; // qax@1
signed int v2; // ecx@1
result = 0i64;
_EBX = a1;
v2 = 8;
do
{
__asm { bt ebx, edx }
LODWORD(result) = __RCL__(result, _CF);
result += 4294967296i64;
--v2;
}
while ( v2 );
return result;
}
//----- (0040143D) --------------------------------------------------------
char __cdecl sub_40143D()
{
char result; // al@1
char v1; // ST10_1@1
char v2; // ST0C_1@1
char v3; // ST08_1@1
char v4; // ST04_1@1
v1 = dword_402024;
v2 = BYTE1(dword_402024);
v3 = BYTE2(dword_402024);
v4 = BYTE3(dword_402024);
LOBYTE(dword_402024) = BYTE3(dword_402028) + dword_402028;
BYTE1(dword_402024) = v4 + BYTE1(dword_402028);
BYTE2(dword_402024) = ~(v3 + dword_402028);
BYTE3(dword_402024) = v1 + BYTE1(dword_402028);
LOBYTE(dword_402028) = v4 + BYTE2(dword_402028);
BYTE1(dword_402028) = ~(v2 + BYTE2(dword_402028));
BYTE2(dword_402028) = v1 + BYTE3(dword_402028);
result = v3 + v2;
BYTE3(dword_402028) = v3 + v2;
return result;
}
// 402024: using guessed type int dword_402024;
// 402028: using guessed type int dword_402028;
//----- (004014D9) --------------------------------------------------------
unsigned __int8 __stdcall sub_4014D9(int a1, int a2, int a3)
{
int v3; // ecx@1
int v4; // edi@1
int v5; // esi@1
unsigned __int8 v6; // al@2
unsigned __int8 result; // al@2
unsigned __int8 v8; // dl@2
signed int v9; // ecx@2
int v10; // [sp-4h] [bp-4h]@2
v5 = a1;
v4 = a2;
v3 = a3;
do
{
v6 = *(_BYTE *)v5++;
v10 = v3;
v9 = 2;
v8 = v6;
result = v6 >> 4;
do
{
if ( result >= 0xAu )
{
if ( result < 0x10u )
result += 55;
}
else
{
result += 48;
}
*(_BYTE *)v4++ = result;
result = v8 & 0xF;
--v9;
}
while ( v9 );
v3 = v10 - 1;
}
while ( v10 != 1 );
*(_BYTE *)v4 = 0;
return result;
}
//----- (00401514) --------------------------------------------------------
char __stdcall sub_401514(int a1, int a2, int a3)
{
unsigned int v3; // eax@1
int v4; // ecx@1
int v5; // edi@1
int v6; // esi@1
v3 = 0;
v6 = a1;
v5 = a2;
v4 = a3;
do
{
LOBYTE(v3) = *(_BYTE *)v6++;
if ( v3 > 9 )
{
if ( v3 < 0xA || v3 > 0x23 )
{
if ( v3 >= 0x24 )
{
if ( v3 <= 0x3D )
v3 += 61;
}
}
else
{
v3 += 55;
}
}
else
{
v3 += 48;
}
*(_BYTE *)v5++ = v3;
--v4;
}
while ( v4 );
return v3;
}
//----- (00401557) --------------------------------------------------------
int __userpurge sub_401557<eax>(int a1<eax>, int a2, int a3)
{
signed int v3; // ecx@1
int v4; // ebx@1
int v5; // esi@1
int v6; // et0@5
int v8; // ST08_4@6
v3 = 2;
v4 = 0;
v5 = a2;
*(_BYTE *)a3 = 0;
do
{
LOBYTE(a1) = *(_BYTE *)v5++;
if ( (_BYTE)a1 >= 48 )
{
if ( (_BYTE)a1 <= 0x39u )
LOBYTE(a1) = a1 - 48;
}
v6 = a1;
a1 = 10 * v4;
v4 = 10 * v4 + v6;
--v3;
}
while ( v3 );
*(_BYTE *)a3 = v4;
return v8;
}
//----- (0040158F) --------------------------------------------------------
unsigned int __cdecl sub_40158F()
{
unsigned int v0; // eax@1
int v1; // ecx@1
int v2; // eax@7
int v3; // ecx@7
unsigned int result; // eax@9
signed int v5; // ecx@9
signed int v6; // edi@9
unsigned int v7; // ebx@10
int v8; // [sp+0h] [bp-4h]@1
v8 = 0;
v1 = (unsigned __int8)byte_4022F6;
v0 = (unsigned __int8)byte_4022F6 + 1999;
do
{
if ( !(v0 % 4) )
++v8;
v8 += 365;
--v0;
--v1;
}
while ( v1 );
if ( !(((unsigned int)(unsigned __int8)byte_4022F6 + 2000) % 4) )
byte_4022E6 = 29;
v2 = 0;
v3 = (unsigned __int16)word_4022F4 - 1;
if ( (unsigned __int16)word_4022F4 != 1 )
{
do
v2 += (unsigned __int8)byte_4022E5[v3--];
while ( v3 );
}
result = v8 + (unsigned __int16)word_4022F2 - 1 + v2;
v6 = 4202520;
v5 = 3;
do
{
v7 = dword_4022A5[v5];
*(_BYTE *)v6++ = result / v7;
result %= v7;
--v5;
}
while ( v5 );
return result;
}
// 4022A5: using guessed type int dword_4022A5[];
// 4022E6: using guessed type char byte_4022E6;
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;
// ALL OK, 9 function(s) have been successfully decompiled
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[原创]韩国的某EDA软件菜鸟破解过程
呵呵,这是菜鸟破解的办法,高手就不用看了,只是想说明破解不一定要什么都懂才能搞,
有时间我再把http://www.eplan-eb2.ys168.com/里我破的软件过程写出来,呵呵,方法一定不是高手用的,但管用,呵呵!
|
能力值:
( LV2,RANK:10 )
|
-
-
|