TRIMUI SMART
dump kernel from memory
/proc/iomem
# cat /proc/iomem
01c02000-01c024dc : sunxi_dmac
01c0f000-01c0ffff : sunxi-mmc
01c10000-01c10fff : sunxi-mmc
01c11000-01c11fff : sunxi-mmc
01c28000-01c283ff : uart
01c28400-01c287ff : uart
01c28800-01c28bff : uart
01c2b000-01c2b3ff : twi.1
01c2b000-01c2b3ff : twi.1
01c68000-01c68fff : spi.0
01c68000-01c68fff : spi
40000000-47ffffff : System RAM
40008000-40660fff : Kernel code
40686000-4072c1af : Kernel data
f1000000-f1200000 : de
f1c0c000-f1c0c3fc : lcd0
main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <time.h>
int main(int argc, char* argv[])
{
int md = open("/dev/mem", O_RDWR);
void *mem = mmap(0, 0x800000, PROT_READ | PROT_WRITE, MAP_SHARED, md, 0x40000000);
int kd = open("kernel.mem", O_RDWR | O_CREAT);
write(kd, mem, 0x800000);
close(kd);
close(md);
return 0;
}
/proc/kallsym
# cat /proc/kallsym
c000a000 T asm_do_IRQ
c000a000 T _stext
c000a000 T __exception_text_start
c000a014 T do_undefinstr
c000a168 T do_DataAbort
c000a20c T do_PrefetchAbort
c000a2b0 T gic_handle_irq
0x4000a000 = 0xc000a000