FreeCalypso > hg > freecalypso-reveng
annotate miscprog/memwrite-grep.c @ 302:844ebeb9a5c6
dsample-fw-disasm: rf_program() and l1dmacro_agc() analysed
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 05 Oct 2019 23:47:32 +0000 |
parents | 8bdc87c0fc03 |
children |
rev | line source |
---|---|
205
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This utility performs a memmem() binary "grep", checking to see if a given |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 * binary file (firmware image) contains the $l1tm_mem_write implementation |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 * code found in our TCS211 objects and in that one C11x fw version for which |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 * we have the map file. |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 */ |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #define _GNU_SOURCE |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <sys/types.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include <sys/file.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include <sys/stat.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include <stdio.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 #include <string.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 #include <stdlib.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 #include <unistd.h> |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 u_char needle[50] = { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 0x30, 0xb5, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 0x45, 0x68, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 0x42, 0x78, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 0x04, 0x3a, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 0x12, 0x06, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 0x13, 0x0e, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 0x00, 0x2b, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 0x09, 0xd0, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 0x00, 0x22, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 0x14, 0x18, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 0x24, 0x7a, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 0x54, 0x55, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 0x52, 0x1c, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 0x12, 0x04, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 0x12, 0x0c, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 0x01, 0x3b, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 0x00, 0x2b, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 0xf6, 0xd1, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 0x00, 0x20, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 0x88, 0x80, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 0x00, 0x06, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 0x00, 0x0e, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 0x48, 0x70, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 0x88, 0x70, |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 0x30, 0xbd |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 }; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 u_char *haystack; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 size_t haystack_size; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 read_file(filename) |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 char *filename; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 int fd; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 struct stat st; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 fd = open(filename, O_RDONLY); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 if (fd < 0) { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 perror(filename); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 exit(1); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 } |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 fstat(fd, &st); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 if (!S_ISREG(st.st_mode)) { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 fprintf(stderr, "error: %s is not a regular file\n", filename); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 exit(1); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 } |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 haystack_size = st.st_size; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 haystack = malloc(haystack_size); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 if (!haystack) { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 fprintf(stderr, "unable to malloc buffer for %s\n", filename); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 exit(1); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 } |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 read(fd, haystack, haystack_size); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 close(fd); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 } |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 main(argc, argv) |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 char **argv; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 u_char *result; |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 if (argc != 2) { |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 fprintf(stderr, "usage: %s firmware.bin\n", argv[0]); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 exit(1); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 } |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 read_file(argv[1]); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 result = memmem(haystack, haystack_size, needle, sizeof needle); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 if (result) |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 printf("Found the needle bytes at offset 0x%x\n", |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 result - haystack); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 else |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 printf("Needle bytes not found in this image\n"); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 exit(0); |
8bdc87c0fc03
memwrite-grep hack-utility written
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 } |