首页 > 代码库 > chrome配置文件校验初始化隐含參数的逆向

chrome配置文件校验初始化隐含參数的逆向

 这篇文章接上一篇文章进一步升华:花了4个小时获得该信息的计算方式
比方在 chrome文件夹下的
\Chrome\User Data\Default文件夹下的Secure Preferences,须要设置"startup_urls":["http://www.baidu.com/"]改參数时,chrome会在该文件里生成"startup_urls":"651507D384340BD7A56E3D3D7646C797AB1593B15400B397908EF95BD2D4CB16"该校验信息,该校验信息的解说在此:http://blog.csdn.net/basketwill/article/details/47663419
该校验信息就是上一篇文章中所计算的hash sha256值怎么计算呢

chrome会组合这种參数 
ASCII "0A52ED0B71E75641568A87D0663A83205BA78F88FC2363B9D0session.startup_urls
["http://www.baidu.com/"]" ,对该字符窜计算sha256 就会生成 startup_urls":"651507D384340BD7A56E3D3D7646C797AB1593B15400B397908EF95BD2D4CB16"这种hash校验值。
注意  红色的字符窜中 
0A52ED0B71E75641568A87D0663A83205BA78F88FC2363B9是怎样生成的呢
 计算方法例如以下:
 1.先获得用户电脑名称
2.然后对该用户去取的Security id 即sid
3.对获得sid进行标准的sha1 hash值
因为简单我直接贴代码: 代码相当简单
bool GetComputerSecurityId( wchar_t security_id[64] )
{
wchar_t account_name[MAX_PATH] = {0};
unsigned long account_len = MAX_PATH;
wchar_t sid[MAX_PATH] = {0};
char sid_buffer[24] = {0};
if ( GetComputerNameW( 
account_name,
&account_len ))
{
if( AddAccessRights( account_name , &sid , 2*MAX_PATH ))
{
ConvertSidToStringSidW( &sid,
  (LPWSTR *)sid_buffer );
if ( security_id && (*(unsigned long*)sid_buffer) )
{
memcpy( security_id , (const void *)(*(unsigned long*)sid_buffer) , MAX_PATH );

LocalFree( (HLOCAL)(*(unsigned long*)sid_buffer) );
}
}
}

return false;
}


bool AddAccessRights(wchar_t* lpAccountName,
PSID Sid,
unsigned long cb_sid_len )
{
wchar_t* account_name = (wchar_t*)HeapAlloc( GetProcessHeap(),0, 2*MAX_PATH );
unsigned long cchReferencedDomainName ;
SID_NAME_USE peUse;
unsigned long cbSid;
BOOLisSuccess = 0;

cbSid = cb_sid_len;
cchReferencedDomainName = 2*MAX_PATH;
if ( account_name )
{
isSuccess = LookupAccountNameW( 
NULL, 
lpAccountName,
Sid, 
&cbSid, 
account_name,
&cchReferencedDomainName, 
&peUse );



if ( !isSuccess )
{
if ( GetLastError() == 122 )
{
if ( cbSid <= cb_sid_len )
{
if ( cchReferencedDomainName > 128 )
{
cchReferencedDomainName = 2 * cchReferencedDomainName;
}

isSuccess = LookupAccountNameW(
NULL,
lpAccountName,
Sid,
&cbSid,
account_name,
&cchReferencedDomainName,
&peUse);
}
}
}
}


if ( account_name )
{
HeapFree( GetProcessHeap() , 0 , account_name );
account_name = NULL;
}

return isSuccess;
}

bool GetVolumeSerialNumber( unsigned long* serial )
{
char root_name[MAX_PATH] = {0};
char* root_disk = 0;
unsigned long VolumeSerialNumber = 0;
if( GetSystemDirectory( root_name ,
MAX_PATH ) && serial )
{
if ( root_disk = strstr( root_name, "\\") )
{
root_disk[1] = 0;
*serial = 0;
if ( GetVolumeInformation(
&root_name[0],
0,
0,
&VolumeSerialNumber,
0,
0,
0,
0) )
{
*serial = VolumeSerialNumber;
return true;
}

}
}

return false;
}


bool GetComputerHashSha1(char* hash_id )
{
wchar_t wcSid[200] = {0};
unsigned long SerialNumber = 0;

GetComputerSecurityId( wcSid );
GetVolumeSerialNumber(&SerialNumber);

char szhashId[40] = {0};
base::SHA1HashBytes( (const unsigned char *)wcSid , 2*lstrlenW(wcSid) , (unsigned char *)szhashId );
return true;
} 

 字符串中D0的产生:
base::SHA1HashBytes( (const unsigned char *)wcSid , 2*lstrlenW(wcSid) , (unsigned char *)szhashId );
GetCrc(szhashId ); 这个结果===D0,就是计算szhashId  的 8位crc

ULONG GetCrc( unsigned char* szhashId , int  len )
{
ULONG crc = 0;
if ( len )
{
for ( int i = 0 ; i < len ; i++ )
{
crc &= 0xFF;
crc ^= ( szhashId[i] & 0xFF);
crc = (g_crc_list[crc] ^ 0xFF);
}
}

crc ^= 0x0055;
}


那个 unsigned char  g_crc_list{    
0,7,0x0E,0x9,0x1C,0x1B,
0x12,
0x15,
0x38,
0x3F,
0x36,
31h,
24h ,
23h,
2Ah,
2Dh,
70h,
77h,
7Eh ,
79h,
6Ch,
6Bh,
62h,
65h,
48h,
 4Fh,
 46h,
41h,
54h,
53h,
5Ah,
5Dh,
0E0h,
0E7h,
0EEh,
0E9h,
0FCh,
0FBh,
0F2h,
0F5h ,
0D8h,
0DFh,
0D6h,
0D1h ,
0C4h ,
0C3h,
0CAh,
0CDh,
90h,
.rdata:03407FB1                 db  97h ; ?

.rdata:03407FB2                 db  9Eh ; ?
.rdata:03407FB3                 db  99h ; ?
.rdata:03407FB4                 db  8Ch ; ?

.rdata:03407FB5                 db  8Bh ; ?
.rdata:03407FB6                 db  82h ; ?
.rdata:03407FB7                 db  85h ; ?

.rdata:03407FB8                 db 0A8h ; ?
.rdata:03407FB9                 db 0AFh ; ?
.rdata:03407FBA                 db 0A6h ; ?
.rdata:03407FBB                 db 0A1h ; ?
.rdata:03407FBC                 db 0B4h ; ?
.rdata:03407FBD                 db 0B3h ; ?

.rdata:03407FBE                 db 0BAh ; ?
.rdata:03407FBF                 db 0BDh ; ?
.rdata:03407FC0                 db 0C7h ; ?

.rdata:03407FC1                 db 0C0h ; ?

.rdata:03407FC2                 db 0C9h ; ?
.rdata:03407FC3                 db 0CEh ; ?

.rdata:03407FC4                 db 0DBh ; ?

.rdata:03407FC5                 db 0DCh ; ?
.rdata:03407FC6                 db 0D5h ; ?
.rdata:03407FC7                 db 0D2h ; ?
.rdata:03407FC8                 db 0FFh
.rdata:03407FC9                 db 0F8h ; ?
.rdata:03407FCA                 db 0F1h ; ?
.rdata:03407FCB                 db 0F6h ; ?
.rdata:03407FCC                 db 0E3h ; ?
.rdata:03407FCD                 db 0E4h ; ?
.rdata:03407FCE                 db 0EDh ; ?
.rdata:03407FCF                 db 0EAh ; ?

.rdata:03407FD0                 db 0B7h ; ?
.rdata:03407FD1                 db 0B0h ; ?

.rdata:03407FD2                 db 0B9h ; ?

.rdata:03407FD3                 db 0BEh ; ?
.rdata:03407FD4                 db 0ABh ; ?
.rdata:03407FD5                 db 0ACh ; ?
.rdata:03407FD6                 db 0A5h ; ?
.rdata:03407FD7                 db 0A2h ; ?
.rdata:03407FD8                 db  8Fh ; ?

.rdata:03407FD9                 db  88h ; ?
.rdata:03407FDA                 db  81h ; ?
.rdata:03407FDB                 db  86h ; ?
.rdata:03407FDC                 db  93h ; ?
.rdata:03407FDD                 db  94h ; ?

.rdata:03407FDE                 db  9Dh ; ?

.rdata:03407FDF                 db  9Ah ; ?

.rdata:03407FE0                 db  27h ; ‘
.rdata:03407FE1                 db  20h
.rdata:03407FE2                 db  29h ; )
.rdata:03407FE3                 db  2Eh ; .
.rdata:03407FE4                 db  3Bh ; ;
.rdata:03407FE5                 db  3Ch ; <
.rdata:03407FE6                 db  35h ; 5
.rdata:03407FE7                 db  32h ; 2
.rdata:03407FE8                 db  1Fh
.rdata:03407FE9                 db  18h
.rdata:03407FEA                 db  11h
.rdata:03407FEB                 db  16h
.rdata:03407FEC                 db    3
.rdata:03407FED                 db    4
.rdata:03407FEE                 db  0Dh
.rdata:03407FEF                 db  0Ah
.rdata:03407FF0                 db  57h ; W
.rdata:03407FF1                 db  50h ; P
.rdata:03407FF2                 db  59h ; Y
.rdata:03407FF3                 db  5Eh ; ^
.rdata:03407FF4                 db  4Bh ; K
.rdata:03407FF5                 db  4Ch ; L
.rdata:03407FF6                 db  45h ; E
.rdata:03407FF7                 db  42h ; B
.rdata:03407FF8                 db  6Fh ; o
.rdata:03407FF9                 db  68h ; h
.rdata:03407FFA                 db  61h ; a
.rdata:03407FFB                 db  66h ; f
.rdata:03407FFC                 db  73h ; s
.rdata:03407FFD                 db  74h ; t
.rdata:03407FFE                 db  7Dh ; }
.rdata:03407FFF                 db  7Ah ; z
.rdata:03408000                 db  89h ; ?
.rdata:03408001                 db  8Eh ; ?
.rdata:03408002                 db  87h ; ?

.rdata:03408003                 db  80h ; €
.rdata:03408004                 db  95h ; ?

.rdata:03408005                 db  92h ; ?

.rdata:03408006                 db  9Bh ; ?

.rdata:03408007                 db  9Ch ; ?

.rdata:03408008                 db 0B1h ; ?
.rdata:03408009                 db 0B6h ; ?
.rdata:0340800A                 db 0BFh ; ?
.rdata:0340800B                 db 0B8h ; ?
.rdata:0340800C                 db 0ADh ; ?
.rdata:0340800D                 db 0AAh ; ?

.rdata:0340800E                 db 0A3h ; ?

.rdata:0340800F                 db 0A4h ; ?

.rdata:03408010                 db 0F9h ; ?
.rdata:03408011                 db 0FEh ; ?
.rdata:03408012                 db 0F7h ; ?

.rdata:03408013                 db 0F0h ; ?
.rdata:03408014                 db 0E5h ; ?

.rdata:03408015                 db 0E2h ; ?
.rdata:03408016                 db 0EBh ; ?
.rdata:03408017                 db 0ECh ; ?
.rdata:03408018                 db 0C1h ; ?

0C6h ; ?
0CFh ; ?

.rdata:0340801B                 db 0C8h ; ?
.rdata:0340801C                 db 0DDh ; ?

.rdata:0340801D                 db 0DAh ; ?
.rdata:0340801E                 db 0D3h ; ?
0D4h ; ?
69h ; i
6Eh ; n
 67h ; g
60h ; `
75h ; u
72h ; r
7Bh ; {
.rdata:03408027                 db  7Ch ; |
.rdata:03408028                 db  51h ; Q
.rdata:03408029                 db  56h ; V
.rdata:0340802A                 db  5Fh ; _
.rdata:0340802B                 db  58h ; X
.rdata:0340802C                 db  4Dh ; M
.rdata:0340802D                 db  4Ah ; J
.rdata:0340802E                 db  43h ; C
.rdata:0340802F                 db  44h ; D
.rdata:03408030                 db  19h
.rdata:03408031                 db  1Eh
.rdata:03408032                 db  17h
.rdata:03408033                 db  10h
.rdata:03408034                 db    5
.rdata:03408035                 db    2
.rdata:03408036                 db  0Bh
.rdata:03408037                 db  0Ch
.rdata:03408038                 db  21h ; !
.rdata:03408039                 db  26h ; &
.rdata:0340803A                 db  2Fh ; /
.rdata:0340803B                 db  28h ; (
.rdata:0340803C                 db  3Dh ; =
.rdata:0340803D                 db  3Ah ; :
.rdata:0340803E                 db  33h ; 3
.rdata:0340803F                 db  34h ; 4
.rdata:03408040                 db  4Eh ; N
.rdata:03408041                 db  49h ; I
.rdata:03408042                 db  40h ; @
.rdata:03408043                 db  47h ; G
.rdata:03408044                 db  52h ; R
.rdata:03408045                 db  55h ; U
.rdata:03408046                 db  5Ch ; \
.rdata:03408047                 db  5Bh ; [
.rdata:03408048                 db  76h ; v
.rdata:03408049                 db  71h ; q
.rdata:0340804A                 db  78h ; x
.rdata:0340804B                 db  7Fh ;
.rdata:0340804C                 db  6Ah ; j
.rdata:0340804D                 db  6Dh ; m
.rdata:0340804E                 db  64h ; d
.rdata:0340804F                 db  63h ; c
.rdata:03408050                 db  3Eh ; >
.rdata:03408051                 db  39h ; 9
.rdata:03408052                 db  30h ; 0
.rdata:03408053                 db  37h ; 7
.rdata:03408054                 db  22h ; "
.rdata:03408055                 db  25h ; %
.rdata:03408056                 db  2Ch ; ,
.rdata:03408057                 db  2Bh ; +
.rdata:03408058                 db    6
.rdata:03408059                 db    1
.rdata:0340805A                 db    8
.rdata:0340805B                 db  0Fh
.rdata:0340805C                 db  1Ah
.rdata:0340805D                 db  1Dh
.rdata:0340805E                 db  14h
.rdata:0340805F                 db  13h
.rdata:03408060                 db 0AEh ; ?
.rdata:03408061                 db 0A9h ; ?
.rdata:03408062                 db 0A0h ; ?
.rdata:03408063                 db 0A7h ; ?
.rdata:03408064                 db 0B2h ; ?
.rdata:03408065                 db 0B5h ; ?

.rdata:03408066                 db 0BCh ; ?
.rdata:03408067                 db 0BBh ; ?
.rdata:03408068                 db  96h ; ?
.rdata:03408069                 db  91h ; ?
.rdata:0340806A                 db  98h ; ?

.rdata:0340806B                 db  9Fh ; ?

.rdata:0340806C                 db  8Ah ; ?
.rdata:0340806D                 db  8Dh ; ?
.rdata:0340806E                 db  84h ; ?
.rdata:0340806F                 db  83h ; ?
.rdata:03408070                 db 0DEh ; ?
.rdata:03408071                 db 0D9h ; ?

.rdata:03408072                 db 0D0h ; ?
.rdata:03408073                 db 0D7h ; ?

.rdata:03408074                 db 0C2h ; ?
.rdata:03408075                 db 0C5h ; ?
.rdata:03408076                 db 0CCh ; ?

.rdata:03408077                 db 0CBh ; ?
.rdata:03408078                 db 0E6h ; ?
.rdata:03408079                 db 0E1h ; ?
.rdata:0340807A                 db 0E8h ; ?
.rdata:0340807B                 db 0EFh ; ?

.rdata:0340807C                 db 0FAh ; ?
.rdata:0340807D                 db 0FDh ; ?
.rdata:0340807E                 db 0F4h ; ?
.rdata:0340807F                 db 0F3h ; ? 

2.第二个隐含数据
第二个隐含数据是在文件夹下resources.pak文件鼠标框的位置,取64个字节。放入sha256的计算第一个字符窜參数
技术分享

 技术分享


算法例如以下
unsigned char* GetResourcePak()
{
//unsigned long source_id = 0x269;

//读取并映射resource pak 文件

//校验
//Resource.pak
/*
0x4CB0000--->0x4CB03D1

if( head == 4 )
{
if( 0x486*6 + 15 < size )
{
0x486++;
if( (heade += 0xB) ==  0x486*6 + 15 )
{
heade += 6;
}
}
}
}
*/
//31F5BD

//获得地址
chrome_resource_pak sb_pak;
sb_pak.sb_id = 0x269;
GetSourceId0(&sb_pak,
(unsigned char *)0x4cb00000+9,
0x486,
sizeof(chrome_resource_hash_pak));


return NULL;
}




chrome配置文件校验初始化隐含參数的逆向