ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
17 мая
1496430 Топик полностью
avcel (06.02.2025 16:57 - 07.02.2025 16:25, просмотров: 184) ответил avcel на windows 7 32 bit какая версия IDA PRO потдерживается ставил 6.8 работает но там нет нужного контроллера . 7.0 уже не работает.
забыл как здесь код вставлять , но хочу показать как мерседесе в щитке приборов crc32 считают. 

//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------

CRC32_Posix_Continental:

//----------------------------------------------------------------------------------------------------------------------

prepare {r29, lp}, 0

//----------------------------------------------------------------------------------------------------------------------

mov 0xFEDD4000, r10

mov 0x03, r9

st.b r9, 0[r10]

mov 0xFF, r9

st.b r9, 1[r10]

mov 0x00, r9

st.b r9, 2[r10]

mov 0x02, r9

st.b r9, 3[r10]

mov 0x5A, r9

st.b r9, 4[r10]

mov 0xFE, r9

st.b r9, 5[r10]

mov 0x01, r9

st.b r9, 6[r10]

mov 0xFF, r9

st.b r9, 7[r10]

nop

//----------------------------------------------------------------------------------------------------------------------

mov 0xFEDD4000, r6 // = r6 = ep

nop

mov 8, r7

nop

mov 0xFFFFFFFF, r8 // = 0xFFFFFFFF innit crc // r8 = CRC32_Posix_Continental

jarl sub_DDFE0, lp //-- CRC32_Posix_Continental

//----------------------------------------------------------------------------------------------------------------------

dispose 0, {r29, lp}, [lp]

//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------

// -- =============== S U B R O U T I N E =======================================

//----------------------------------------------------------------------------------------------------------------------

// CRC32_Posix_Continental

//----------------------------------------------------------------------------------------------------------------------

sub_DDFE0: //-- CODE XREF: sub_BF924+DC?p

//----------------------------------------------------------------------------------------------------------------------

//-- sub_BF924+128?p ...

mov r6, ep //-- FEDD4000 = r6 = ep = 03 FF 00 02 5A FE 01 FF

cmp r0, r7 //-- r7 = 8

bz loc_DE0E0

br loc_DE056

//----------------------------------------------------------------------------------------------------------------------

loc_DDFE8: //-- CODE XREF: sub_DDFE0+78?j

sld.bu 0[ep], r1 // sld.bu [ep], r1 // 0 = 03 // 1 = FF // 2 = 00 // 3 = 02 // 4 = 5A // 5 = FE // 6 = 01 // 7 = FF

andi 0xF0, r1, r2

zxb r2

sar 4, r2 // r2 >> 0x04

zxb r2

andi 0x0F, r1, r1

zxb r1

shl 4, r1 // r1 << 0x04

zxb r1

or r2, r1

zxb r1 // byte0 = 0x30 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x20 // byte4 = 0x5A // byte5 = 0xEF // byte6 = 0x10 // byte7 = 0xFF

//----------------------------------------------------------------------------------------------------------------------

andi 0xCC, r1, r2

zxb r2

sar 2, r2 // r2 >> 0x02

zxb r2

andi 0x33, r1, r1

zxb r1

shl 2, r1 // r1 << 0x02

zxb r1

or r2, r1

zxb r1 // byte0 = 0xC0 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x80 // byte4 = 0xA5 // byte5 = 0xBF // byte6 = 0x40 // byte7 = 0xFF

//----------------------------------------------------------------------------------------------------------------------

andi 0xAA, r1, r2

zxb r2

sar 1, r2 // r2 >> 0x01

zxb r2

andi 0x55, r1, r1

zxb r1

shl 1, r1 // r1 << 0x01

zxb r1

or r2, r1

zxb r1 // byte0 = 0xC0 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x40 // byte4 = 0x5A // byte5 = 0x7F // byte6 = 0x80 // byte7 = 0xFF

//----------------------------------------------------------------------------------------------------------------------

mov r8, r2 // r8 = CRC32_Posix_Continental // r2 = byte0 = 0xFFFFFFFF // byte1 = 0x13822F2D // byte2 = 0x728A901D // byte3 = 0x63A63B89 // byte4 = 0x335B1939 // byte5 = 0xD5750F98 // byte6 = 0xABAA18D8 // byte7 = 0x1970A581

shr 0x18, r2 // r2 >> 0x18

zxb r2

xor r1, r2

mov r2, r1 // index0 = 3F Dwords // index1 = EC Dwords// index2 = 72 Dwords// index3 = 23 Dwords// index4 = 69 Dwords// index5 = AA Dwords// index6 = 2B Dwords// index7 = E6 Dwords

//----------------------------------------------------------------------------------------------------------------------

shl 2, r1 // r1 << 0x02 // = index0 FC bytes // index1 3B0 bytes // index2 1C8 bytes // index3 8C bytes = // index4 1A4 bytes // index5 2A8 bytes // index6 AC bytes // index7 398 bytes

mov Crc32_Table_Posix_Dwords, r2 //-- Crc32_Table Crc32_Posix // index0 = FC bytes // index1 = 3B0 bytes // index2 = 1C8 bytes // index3 = 8C bytes // index4 = 1A4 bytes // index5 = 2A8 bytes // index6 = AC bytes // index7 = 398 bytes

add r2, r1

ld.w 0[r1], r1 // index0 FC bytes = 0xEC7DD02D // index1 3B0 bytes = 0xF0A5BD1D // index2 1C8 bytes = 0xE9362689 // index3 8C bytes = 0x95609039 // index4 1A4 bytes = 0x8E6C3698 // index5 2A8 bytes = 0xDEA580D8 // index6 AC bytes = 0xB3687D81 // index7 398 bytes = 0xBF2F6BCB

//----------------------------------------------------------------------------------------------------------------------

mov r8, r2 // r8 = CRC32_Posix_Continental // r2 = byte0 = 0xFFFFFFFF // byte1 = 0x13822F2D // byte2 = 0x728A901D // byte3 = 0x63A63B89 // byte4 = 0x335B1939 // byte5 = 0xD5750F98 // byte6 = 0xABAA18D8 // byte7 = 0x1970A581

shl 8, r2 // r2 << 0x08

mov r2, r8 // r8 = CRC32_Posix_Continental

xor r1, r8 // r8 = CRC32_Posix_Continental // byte0 r8 = 0x13822F2D// byte1 = 0x728A901D// byte2 = 0x63A63B89 // byte3 = 0x335B1939 // byte4 = 0xD5750F98 // byte5 = 0xABAA18D8 // byte6 = 0x1970A581 // byte7 = 0xAF8AEACB = resultat

//----------------------------------------------------------------------------------------------------------------------

add 1, ep // r8 = CRC32_Posix_Continental // byte7 = 0xAF8AEACB = resultat

add -1, r7

//----------------------------------------------------------------------------------------------------------------------

loc_DE056: //-- CODE XREF: sub_DDFE0+6?j

cmp r0, r7

bnz loc_DDFE8

//----------------------------------------------------------------------------------------------------------------------

mov 0xFFFF0000, r2

mov r8, r1 // r8 = CRC32_Posix_Continental

and r2, r1

shr 0x10, r1 // r1 >> 0x10

mov 0x0000FFFF, r5

mov r8, r2 // r8 = CRC32_Posix_Continental

and r5, r2

shl 0x10, r2 // r2 << 0x10

mov r2, r8 // r8 = CRC32_Posix_Continental

or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xEACBAF8A

//----------------------------------------------------------------------------------------------------------------------

mov 0xFF00FF00, r2

mov r8, r1

and r2, r1

shr 8, r1 // r1 >> 0x08

mov 0x00FF00FF, r5

mov r8, r2 // r8 = CRC32_Posix_Continental

and r5, r2

shl 8, r2 // r2 << 0x08

mov r2, r8 // r8 = CRC32_Posix_Continental

or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xCBEA8AAF

//----------------------------------------------------------------------------------------------------------------------

mov 0xF0F0F0F0, r2

mov r8, r1 // r8 = CRC32_Posix_Continental

and r2, r1

shr 4, r1 // r1 >> 0x04

mov 0x0F0F0F0F, r5

mov r8, r2 // r8 = CRC32_Posix_Continental

and r5, r2

shl 4, r2 // r2 << 0x04

mov r2, r8 // r8 = CRC32_Posix_Continental

or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xBCAEA8FA

//----------------------------------------------------------------------------------------------------------------------

mov 0xCCCCCCCC, r2

mov r8, r1 // r8 = CRC32_Posix_Continental

and r2, r1

shr 2, r1 // r1 >> 0x02

mov 0x33333333, r5

mov r8, r2

and r5, r2

shl 2, r2 // r2 << 0x02

mov r2, r8 // r8 = CRC32_Posix_Continental

or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xE3ABA2FA

//----------------------------------------------------------------------------------------------------------------------

mov 0xAAAAAAAA, r2

mov r8, r1 // r8 = CRC32_Posix_Continental

and r2, r1

shr 1, r1 // r1 >> 0x01

mov 0x55555555, r5

mov r8, r2

and r5, r2

shl 1, r2 // r2 << 0x01

mov r2, r8 // r8 = CRC32_Posix_Continental

or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xD35751F5

//----------------------------------------------------------------------------------------------------------------------

not r8, r8 // r8 = CRC32_Posix_Continental // R8 = 0x2CA8AE0A

//----------------------------------------------------------------------------------------------------------------------

loc_DE0E0: //-- CODE XREF: sub_DDFE0+4?j

mov r8, r10 // R10 = 0x2CA8AE0A

jmp [lp] // 0A AE A8 2C Bytes

// -- End of function sub_DDFE0

//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------


//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------

Crc32_Table_Posix_Dwords:

//--------------------------------------------------------------------------------------------------

DW 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005

DW 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD

DW 0x4C11DB70, 0x48D0C6C7, 0x4593E01E, 0x4152FDA9, 0x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75

DW 0x6A1936C8, 0x6ED82B7F, 0x639B0DA6, 0x675A1011, 0x791D4014, 0x7DDC5DA3, 0x709F7B7A, 0x745E66CD

DW 0x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039, 0x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5

DW 0xBE2B5B58, 0xBAEA46EF, 0xB7A96036, 0xB3687D81, 0xAD2F2D84, 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D

DW 0xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49, 0xC7361B4C, 0xC3F706FB, 0xCEB42022, 0xCA753D95

DW 0xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1, 0xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, 0xEC7DD02D

DW 0x34867077, 0x30476DC0, 0x3D044B19, 0x39C556AE, 0x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072

DW 0x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16, 0x018AEB13, 0x054BF6A4, 0x0808D07D, 0x0CC9CDCA

DW 0x7897AB07, 0x7C56B6B0, 0x71159069, 0x75D48DDE, 0x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02

DW 0x5E9F46BF, 0x5A5E5B08, 0x571D7DD1, 0x53DC6066, 0x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA

DW 0xACA5C697, 0xA864DB20, 0xA527FDF9, 0xA1E6E04E, 0xBFA1B04B, 0xBB60ADFC, 0xB6238B25, 0xB2E29692

DW 0x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6, 0x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A

DW 0xE0B41DE7, 0xE4750050, 0xE9362689, 0xEDF73B3E, 0xF3B06B3B, 0xF771768C, 0xFA325055, 0xFEF34DE2

DW 0xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686, 0xD5B88683, 0xD1799B34, 0xDC3ABDED, 0xD8FBA05A

DW 0x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637, 0x7A089632, 0x7EC98B85, 0x738AAD5C, 0x774BB0EB

DW 0x4F040D56, 0x4BC510E1, 0x46863638, 0x42472B8F, 0x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53

DW 0x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47, 0x36194D42, 0x32D850F5, 0x3F9B762C, 0x3B5A6B9B

DW 0x0315D626, 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF, 0x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623

DW 0xF12F560E, 0xF5EE4BB9, 0xF8AD6D60, 0xFC6C70D7, 0xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B

DW 0xD727BBB6, 0xD3E6A601, 0xDEA580D8, 0xDA649D6F, 0xC423CD6A, 0xC0E2D0DD, 0xCDA1F604, 0xC960EBB3

DW 0xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7, 0xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B

DW 0x9B3660C6, 0x9FF77D71, 0x92B45BA8, 0x9675461F, 0x8832161A, 0x8CF30BAD, 0x81B02D74, 0x857130C3

DW 0x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640, 0x4E8EE645, 0x4A4FFBF2, 0x470CDD2B, 0x43CDC09C

DW 0x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8, 0x68860BFD, 0x6C47164A, 0x61043093, 0x65C52D24

DW 0x119B4BE9, 0x155A565E, 0x18197087, 0x1CD86D30, 0x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC

DW 0x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088, 0x2497D08D, 0x2056CD3A, 0x2D15EBE3, 0x29D4F654

DW 0xC5A92679, 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0, 0xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C

DW 0xE3A1CBC1, 0xE760D676, 0xEA23F0AF, 0xEEE2ED18, 0xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4

DW 0x89B8FD09, 0x8D79E0BE, 0x803AC667, 0x84FBDBD0, 0x9ABC8BD5, 0x9E7D9662, 0x933EB0BB, 0x97FFAD0C

DW 0xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668, 0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4

//----------------------------------------------------------------------------------------------------------------------

//********************************************************************************************************************************

//********************************************************************************************************************************

//********************************************************************************************************************************

//----------------------------------------------------------------------------------------------------------------------