zoukankan      html  css  js  c++  java
  • chrome配置文件校验初始化隐含參数的逆向

     这篇文章接上一篇文章进一步升华:花了4个小时获得该信息的计算方式
    比方在 chrome文件夹下的
    ChromeUser DataDefault文件夹下的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;
    }




  • 相关阅读:
    ubuntu20.04安装python pip
    linux tar包追加问题
    [Linux]主机无法ping通虚拟机,但虚拟机却可以ping通主机
    安装pygraphviz/graphviz报错
    elasticsearch Delete (根据条件删除)
    python2 vs python3的区别汇总
    python实现elasticsearch的update操作,不改变原数据,增加字段,或者查询更新
    python bulk批量保存elasticsearch数据
    python rpc 简单实现自带包xmlrpc
    Python获取当前运行函数的名称、类方法名称
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7357311.html
Copyright © 2011-2022 走看看