помагите разобратся с арм командами Код (Text): sub_868 ; CODE XREF: sub_2ABC8-24D68p ROM:00000868 ROM:00000868 var_20 = -0x20 ROM:00000868 var_1C = -0x1C ROM:00000868 arg_398 = 0x398 ROM:00000868 ROM:00000868 STMFD SP!, {R3-R9,LR} ROM:0000086C BL sub_6F60 ROM:00000870 BL sub_A4A0 ROM:00000874 LDR R7, =0x4037954C ROM:00000878 MOV R1, #0 ROM:0000087C MOV R0, #0x4C ; 'L' ROM:00000880 MOV R2, R7 ROM:00000884 BL sub_AC5C ROM:00000888 ADD R0, R7, #8 ROM:0000088C MOV R4, R0 ROM:00000890 SUB R0, R0, R7 ROM:00000894 AND R2, R0, #0xFF ROM:00000898 ROM:00000898 loc_898 ; DATA XREF: ROM:00234BDCo ROM:00000898 LDR R5, [R7,#4] ROM:0000089C LDR R6, [R7] ROM:000008A0 MOV R0, R4 ROM:000008A4 MOV R1, #0x3C ; '<' ROM:000008A8 BL sub_7B0 ROM:000008AC LDR R9, =0x5291989 ROM:000008B0 CMP R0, R5 ROM:000008B4 CMPEQ R6, R9 ROM:000008B8 BEQ loc_8CC ROM:000008BC MOV R0, R4 ROM:000008C0 LDR R1, =0x40298324 ROM:000008C4 MOV R2, #0x3C ; '<' ROM:000008C8 BL sub_1F608 ROM:000008CC ROM:000008CC loc_8CC ; CODE XREF: sub_868+50j ROM:000008CC LDRB R0, [R7,#8] ROM:000008D0 MOV R4, #1 ROM:000008D4 CMP R0, #4 ROM:000008D8 BGT loc_8E4 ROM:000008DC CMP R0, #1 ROM:000008E0 ROM:000008E0 loc_8E0 ; DATA XREF: ROM:000D64A9o ROM:000008E0 BGE loc_8E8 ROM:000008E4 ROM:000008E4 loc_8E4 ; CODE XREF: sub_868+70j ROM:000008E4 STRB R4, [R7,#8] ROM:000008E8 ROM:000008E8 loc_8E8 ; CODE XREF: sub_868:loc_8E0j ROM:000008E8 ADD R0, R7, #0x48 ROM:000008EC MOV R5, R0 ROM:000008F0 SUB R0, R0, R7 ROM:000008F4 AND R2, R0, #0xFF ROM:000008F8 MOV R0, R5 ROM:000008FC LDR R8, [R7,#0x44] ROM:00000900 MOV R1, #1 ROM:00000904 BL sub_7B0 ROM:00000908 CMP R0, R8 ROM:0000090C CMPEQ R6, R9 ROM:00000910 BEQ loc_91C ROM:00000914 MOV R0, R5 ROM:00000918 BL sub_ACC0 ROM:0000091C ROM:0000091C loc_91C ; CODE XREF: sub_868+A8j ROM:0000091C LDR R0, [R7,#0x10] ROM:00000920 LDR R9, =0x403795AC ROM:00000924 STR R0, [R9] ROM:00000928 LDR R0, =0x403795B0 ROM:0000092C STRH R4, [R0] ROM:00000930 LDR R0, =0x40307CD8 ROM:00000934 LDR R0, [R0] ROM:00000938 ADD R0, R0, #3 ROM:0000093C BIC R8, R0, #3 ROM:00000940 BL sub_5CEC ROM:00000944 SUB R6, R0, #1 ROM:00000948 LDR R0, =0x403795B4 ROM:0000094C ADD R6, R6, #0x6C0000 ROM:00000950 STR R4, [R0] ROM:00000954 LDR R0, =0x403795B8 ROM:00000958 MOV R1, R6 ROM:0000095C STR R4, [R0] ROM:00000960 ROM:00000960 loc_960 ; DATA XREF: ROM:0021838Co ROM:00000960 ; ROM:002183D4o ROM:00000960 ADD R0, R8, #3 ROM:00000964 BIC R0, R0, #3 ROM:00000968 MOV R2, SP ROM:0000096C BL sub_D18 ROM:00000970 MOV R8, R0 ROM:00000974 BL sub_AF74 ROM:00000978 LDR R0, =0x403795A8 ROM:0000097C MOV R1, #2 ROM:00000980 STR R1, [R0] ROM:00000984 LDR R0, =0x40379598 ROM:00000988 STR R4, [R0] ROM:0000098C STR R4, [R0,#4] ROM:00000990 BL sub_C114 ROM:00000994 LDR R0, [SP,#0x20+var_20] ROM:00000998 CMP R0, #0 ROM:0000099C BEQ loc_C80 ROM:000009A0 ROM:000009A0 loc_9A0 ; CODE XREF: sub_868+1ACj ROM:000009A0 ADR R0, unk_A3C ROM:000009A4 BL sub_1CCC ROM:000009A8 ADR R0, unk_A3C ROM:000009AC BL sub_1CCC ROM:000009B0 ADR R0, unk_A3C ROM:000009B4 BL sub_1CCC ROM:000009B8 ADR R0, unk_A3C ROM:000009BC BL sub_1CCC ROM:000009C0 ADR R0, unk_A3C ROM:000009C4 BL sub_1CCC ROM:000009C8 ADR R0, unk_A3C ROM:000009CC BL sub_1CCC ROM:000009D0 ADR R0, unk_A3C ROM:000009D4 BL sub_1CCC ROM:000009D8 ADR R0, unk_A3C ROM:000009DC BL sub_1CCC ROM:000009E0 ADR R0, unk_A3C ROM:000009E4 BL sub_1CCC ROM:000009E8 ADR R0, unk_A3C ROM:000009EC BL sub_1CCC ROM:000009F0 ADR R0, unk_A3C ROM:000009F4 BL sub_1CCC ROM:000009F8 ADR R0, unk_A3C ROM:000009FC BL sub_1CCC ROM:00000A00 MOV R4, #0 ROM:00000A04 ROM:00000A04 loc_A04 ; CODE XREF: sub_868+1A8j ROM:00000A04 BL sub_4980 ROM:00000A08 ADD R4, R4, #1 ROM:00000A0C CMP R4, #0x32 ; '2' ROM:00000A10 BCC loc_A04 ROM:00000A14 B loc_9A0 ROM:00000A14 ; --------------------------------------------------------------------------- ROM:00000A18 dword_A18 DCD 0x5291989 ; DATA XREF: sub_868+44r ROM:00000A1C dword_A1C DCD 0x40298324 ; DATA XREF: sub_868+58r ROM:00000A20 dword_A20 DCD 0x403795AC ; DATA XREF: sub_868+B8r ROM:00000A24 dword_A24 DCD 0x403795B0 ; DATA XREF: sub_868+C0r ROM:00000A28 dword_A28 DCD 0x40307CD8 ; DATA XREF: sub_868+C8r ROM:00000A2C dword_A2C DCD 0x403795B4 ; DATA XREF: sub_868+E0r ROM:00000A30 dword_A30 DCD 0x403795B8 ; DATA XREF: sub_868+ECr ROM:00000A34 dword_A34 DCD 0x403795A8 ; DATA XREF: sub_868+110r ROM:00000A38 dword_A38 DCD 0x40379598 ; DATA XREF: sub_868+11Cr ROM:00000A3C unk_A3C DCB 0xD ; DATA XREF: sub_868:loc_9A0o ROM:00000A3C ; sub_868+140o ... ROM:00000A3D
Azer Проблемы связанные с АРМ рассматриваются в WASM.ELECTRONICS попроси модераторов перебросить топик туда
документацию не скачивал дайте сылку хотел разобратся с командами Код (Text): ROM:000009A0 loc_9A0 ; CODE XREF: sub_868+1ACj ROM:000009A0 ADR R0, unk_A3C ROM:000009A4 BL sub_1CCC ROM:000009A8 ADR R0, unk_A3C ROM:000009AC BL sub_1CCC ROM:000009B0 ADR R0, unk_A3C ROM:000009B4 BL sub_1CCC ROM:000009B8 ADR R0, unk_A3C ROM:000009BC BL sub_1CCC ROM:000009C0 ADR R0, unk_A3C ROM:000009C4 BL sub_1CCC ROM:000009C8 ADR R0, unk_A3C ROM:000009CC BL sub_1CCC ROM:000009D0 ADR R0, unk_A3C ROM:000009D4 BL sub_1CCC ROM:000009D8 ADR R0, unk_A3C ROM:000009DC BL sub_1CCC ROM:000009E0 ADR R0, unk_A3C ROM:000009E4 BL sub_1CCC ROM:000009E8 ADR R0, unk_A3C ROM:000009EC BL sub_1CCC ROM:000009F0 ADR R0, unk_A3C ROM:000009F4 BL sub_1CCC ROM:000009F8 ADR R0, unk_A3C ROM:000009FC BL sub_1CCC ROM:00000A00 MOV R4, #0 ROM:00000A04 ROM:00000A04 loc_A04 ; CODE XREF: sub_868+1A8j ROM:00000A04 BL sub_4980 ROM:00000A08 ADD R4, R4, #1 ROM:00000A0C CMP R4, #0x32 ; '2' ROM:00000A10 BCC loc_A04 ROM:00000A14 B loc_9A0
Ну что Вы в самом деле идете сюда http://www.arm.com/products/processors/index.php, находите нужную платформу регистрируйтесь и скачиваете.
ADR -- не настоящая команда, а псевдокоманда, загружающая в указанный регистр адрес метки. При трансляции превращается в ADD/SUB (может, ещё во что). BL -- вызов подпрограммы.
Это бесконечный цикл, где 12 раз вызывается sub_1CCC с одним и тем же параметром (0xD), а потом 32 раза sub_4890, и так "по кругу". P.S. Откуда вообще этот гoвнo феерический код?
вот сам это прошивка которая зашифрованая вот никак ни пойму его алгаритм sub_1CCC Код (Text): ROM:00001CCC sub_1CCC ; CODE XREF: ROM:loc_1F8p ROM:00001CCC ; ROM:loc_204p ... ROM:00001CCC ROM:00001CCC var_20 = -0x20 ROM:00001CCC var_1C = -0x1C ROM:00001CCC var_14 = -0x14 ROM:00001CCC var_10 = -0x10 ROM:00001CCC var_C = -0xC ROM:00001CCC ROM:00001CCC STMFD SP!, {R0-R3} ROM:00001CD0 STMFD SP!, {R2-R4,LR} ROM:00001CD4 LDR R0, =0x40307CE4 ROM:00001CD8 LDR R1, [R0] ROM:00001CDC MOV R0, #0 ROM:00001CE0 TST R1, #2 ROM:00001CE4 BNE loc_1CF0 ROM:00001CE8 TST R1, #1 ROM:00001CEC BNE loc_1CF8 ROM:00001CF0 ROM:00001CF0 loc_1CF0 ; CODE XREF: sub_1CCC+18j ROM:00001CF0 ; sub_1CCC+70j ROM:00001CF0 LDMFD SP!, {R2-R4} ROM:00001CF4 LDR PC, [SP+0x14+var_14],#0x14 ROM:00001CF8 ; --------------------------------------------------------------------------- ROM:00001CF8 ROM:00001CF8 loc_1CF8 ; CODE XREF: sub_1CCC+20j ROM:00001CF8 ADD R0, SP, #0x20+var_C ROM:00001CFC STR R0, [SP,#0x20+var_20] ROM:00001D00 STR R0, [SP,#0x20+var_1C] ROM:00001D04 LDR R0, =0x4037A138 ROM:00001D08 MOV R2, SP ROM:00001D0C LDR R1, [SP,#0x20+var_10] ROM:00001D10 BL sub_1F70C ROM:00001D14 ADD R2, SP, #0x20+var_1C ROM:00001D18 MOV R0, #0 ROM:00001D1C LDR R1, [SP,#0x20+var_10] ROM:00001D20 BL sub_1DE4 ROM:00001D24 MOV R4, R0 ROM:00001D28 MOV R0, #0 ROM:00001D2C MOV R2, #1 ROM:00001D30 MOV R1, #0 ROM:00001D34 BL sub_1618 ROM:00001D38 MOV R0, R4 ROM:00001D3C B loc_1CF0 ROM:00001D3C ; End of function sub_1CCC и Код (Text): ROM:00004980 sub_4980 ; CODE XREF: sub_868:loc_A04p ROM:00004980 ; ROM:loc_CC8p ... ROM:00004980 STMFD SP!, {R4,LR} ROM:00004984 MOV R4, #0 ROM:00004988 ROM:00004988 loc_4988 ; CODE XREF: sub_4980+14j ROM:00004988 BL sub_4930 ROM:0000498C ADD R4, R4, #1 ROM:00004990 CMP R4, #0xA ROM:00004994 BLT loc_4988 ROM:00004998 LDMFD SP!, {R4,PC} ROM:00004998 ; End of function sub_4980
можете помоч с командами Код (Text): var_20 = -0x20 ROM:00001CCC var_1C = -0x1C ROM:00001CCC var_14 = -0x14 ROM:00001CCC var_10 = -0x10 ROM:00001CCC var_C = -0xC ROM:00001CCC ROM:00001CCC STMFD SP!, {R0-R3} ROM:00001CD0 STMFD SP!, {R2-R4,LR} ROM:00001CD4 LDR R0, =0x40307CE4 ROM:00001CD8 LDR R1, [R0] ROM:00001CDC MOV R0, #0 ROM:00001CE0 TST R1, #2 ROM:00001CE4 BNE loc_1CF0 ROM:00001CE8 TST R1, #1 ROM:00001CEC BNE loc_1CF8 ROM:00001CF0
Azer В IDA (как видно из листинга вы ей пользуетесь) есть замечательная функция AUTO COMMENTS (options->general->disassembly->AUTO COMMENTS поставить галочку). Для плохо изученой платформы очень выручает по началу.
да это я знаю но вот с командами некоторыми не очень вот к примеру Код (Text): :00000A3C loc_A3C ; DATA XREF: sub_868:loc_9A0o ROM:00000A3C ; sub_868+140o ... ROM:00000A3C STCEQ p0, c0, [R10] ; Store Coprocessor Register ROM:00000A40 BGT 0xFF5D9EA0 ; Branch ROM:00000A44 STCGTL p15, c6, [R4,#0x228] ; Store Coprocessor Register ROM:00000A48 EORVCS R0, R0, #0x1C ; Rd = Op1 ^ Op2 ROM:00000A4C SVCVC 0x186C62 ; Supervisor Call ROM:00000A50 ADDGE LR, LR, #loc_8A000 ; Rd = Op1 + Op2 ROM:00000A54 MCRCC p9, 5, R1,c1,c0 ; Move from ARM to Coprocessor Register ROM:00000A58 CDPCC p12, 0, c15,c8,c4 ; Coprocessor Data Processing ROM:00000A5C LDCEQL p0, c13, [SP+0x20+var_20],#-0x180 ; Load Coprocessor Register ROM:00000A60 CMNGT R11, R0,ASR R5 ; Set cond. codes on Op1 + Op2 ROM:00000A64 SVCNV 0x505195 ; Supervisor Call ROM:00000A68 ADCGES R2, R4, #0x4400 ; Rd = Op1 + Op2 + C ROM:00000A6C LDRHI R4, [R10],R9,ASR#25 ; Load from Memory ROM:00000A70 TEQCS R11, #loc_1D4000 ; Set cond. codes on Op1 ^ Op2 ROM:00000A74 BLLT 0xFFCFB60C ; Branch with Link ROM:00000A78 BCS 0xFF4FC054 ; Branch ROM:00000A7C BICCCS R12, LR, R7,ASR#13 ; Rd = Op1 & ~Op2 ROM:00000A80 MOVCS R5, #0xE9AA ; Rd = Op2 ROM:00000A84 BLNE 0x1D2BE98 ; Branch with Link ROM:00000A88 LDRLSB R7, [R5,#0x158]! ; Load from Memory ROM:00000A8C MRCEQ p11, 4, R0,c2,c3, 2 ; Move from Coprocessor to ARM Register ROM:00000A90 STMVSIA R12!, {R12-PC}^ ; Store Block to Memory ROM:00000A94 STMDA R1, {R3,R6,R10,LR}^ ; Store Block to Memory ROM:00000A98 CDPGT p4, 4, c0,c7,c10, 3 ; Coprocessor Data Processing ROM:00000A9C MRCVS p4, 3, R0,c8,c8, 6 ; Move from Coprocessor to ARM Register ROM:00000AA0 SBCVC R6, R5, PC,ASR#29 ; Rd = Op1 - Op2 + C - 1 ROM:00000AA4 ADDGT R9, R1, #0x3E000000 ; Rd = Op1 + Op2 ROM:00000AA8 STMNEIB R2, {R0,R2-R4,R6,R10,R11,PC} ; Store Block to Memory
Код (Text): sub_3494 MOV R0, 0x18006000 LDR R1, [R0,#0x8C] ; Load from Memory BIC R1, R1, #0x1080000 ; Rd = Op1 & ~Op2 BIC R1, R1, #loc_10400 ; Rd = Op1 & ~Op2 BIC R1, R1, #4 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x8C] ; Store to Memory LDR R1, [R0,#0x90] ; Load from Memory BIC R1, R1, #0x2180000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x90] ; Store to Memory LDR R1, [R0,#0xD0] ; Load from Memory BIC R1, R1, #dword_1C000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x1CC ; Rd = Op1 & ~Op2 STR R1, [R0,#0xD0] ; Store to Memory LDR R1, [R0,#8] ; Load from Memory BIC R1, R1, #dword_1C000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x19C ; Rd = Op1 & ~Op2 STR R1, [R0,#8] ; Store to Memory LDR R1, [R0,#0xC] ; Load from Memory ORR R1, R1, #loc_10000 ; Rd = Op1 | Op2 STR R1, [R0,#0xC] ; Store to Memory LDR R1, [R0,#0x10] ; Load from Memory BIC R1, R1, #loc_10000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x10] ; Store to Memory LDR R1, [R0,#0xC] ; Load from Memory BIC R1, R1, #0xC000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x1DC ; Rd = Op1 & ~Op2 STR R1, [R0,#0xC] ; Store to Memory LDR R1, [R0,#0x14] ; Load from Memory BIC R1, R1, #0x10 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x14] ; Store to Memory LDR R1, [R0,#0x14] ; Load from Memory ORR R1, R1, #0xC000 ; Rd = Op1 | Op2 ORR R1, R1, #0x1CC ; Rd = Op1 | Op2 STR R1, [R0,#0x14] ; Store to Memory LDR R1, [R0,#0x40] ; Load from Memory ORR R1, R1, #0x40000000 ; Rd = Op1 | Op2 ORR R1, R1, #0x100000 ; Rd = Op1 | Op2 ORR R1, R1, #loc_11000 ; Rd = Op1 | Op2 STR R1, [R0,#0x40] ; Store to Memory LDR R1, [R0,#0x44] ; Load from Memory BIC R1, R1, #0x40000000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x100000 ; Rd = Op1 & ~Op2 BIC R1, R1, #loc_11000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x44] ; Store to Memory LDR R1, [R0,#0x48] ; Load from Memory BIC R1, R1, #0x40000000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x100000 ; Rd = Op1 & ~Op2 BIC R1, R1, #loc_11000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x48] ; Store to Memory LDR R1, [R0,#0x50] ; Load from Memory ORR R1, R1, #loc_11000 ; Rd = Op1 | Op2 STR R1, [R0,#0x50] ; Store to Memory LDR R1, [R0,#0x50] ; Load from Memory BIC R1, R1, #0x40000000 ; Rd = Op1 & ~Op2 BIC R1, R1, #0x100000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x50] ; Store to Memory LDR R1, [R0,#0xC0] ; Load from Memory BIC R1, R1, #loc_10000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0xC0] ; Store to Memory LDR R1, [R0,#0xC4] ; Load from Memory BIC R1, R1, #0x2000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0xC4] ; Store to Memory LDR R1, [R0,#0xC4] ; Load from Memory ORR R1, R1, #dword_20000 ; Rd = Op1 | Op2 STR R1, [R0,#0xC4] ; Store to Memory LDR R1, [R0,#0x8C] ; Load from Memory BIC R1, R1, #0x20 ; Rd = Op1 & ~Op2 STR R1, [R0,#0x8C] ; Store to Memory LDR R1, [R0,#0xC4] ; Load from Memory BIC R1, R1, #0x2000000 ; Rd = Op1 & ~Op2 STR R1, [R0,#0xC4] ; Store to Memory RET ; Return from Subroutine ; End of function sub_3494 помагите расшифровать
Azer Так помощь не просят. Инфы мало. Для начала пишут откуда прошивка и для чего. И что собственно ты от дизассемблирования получить хочешь. А выдавая куски, которые может и не код, а может и не АРМ или АРМ, но другой модели - это к экстрасенсам...