I made dump of firmware many times and now it's stable and don't change...
Quote from: muttley on 27 / December / 2007, 02:59:42I made dump of firmware many times and now it's stable and don't change...Where can I have it? Please upload it somewhere and post the link here.
void boot(){ long *canon_data_src = (void*)0xFFEEB4D0; long *canon_data_dst = (void*)0x1900; long canon_data_len = 0xB540; long *canon_bss_start = (void*)0xCE40; // just after data long canon_bss_len = 0x9F2B0 - 0xCE40; long i; ...void h_usrInit(){ asm volatile ( "STR LR, [SP,#-4]!\n" "BL sub_FFC01968\n" "MOV R0, #2\n" "MOV R1, R0\n" "BL sub_FFCC1CEC\n" //unknown_libname_201 "BL sub_FFCB6DB8\n" //excVecInit "BL sub_FFC011C4\n" "BL sub_FFC01728\n" "LDR LR, [SP],#4\n" "B h_usrKernelInit\n" );}void h_usrKernelInit(){ asm volatile ( "STMFD SP!, {R4,LR}\n" "SUB SP, SP, #8\n" "BL sub_FFCC21EC\n" //classLibInit "BL sub_FFCD2318\n" //taskLibInit "LDR R3, =0x4E60\n" "LDR R2, =0x9C4C0\n" "LDR R1, [R3]\n" "LDR R0, =0x9D010\n" "MOV R3, #0x100\n" "BL sub_FFCCDF08\n" //qInit "LDR R3, =0x4E20\n" "LDR R0, =0x51C0\n" "LDR R1, [R3]\n" "BL sub_FFCCDF08\n" //qInit "LDR R3, =0x4EDC\n" "LDR R0, =0x9CFE4\n" "LDR R1, [R3]\n" "BL sub_FFCCDF08\n" //qInit "BL sub_FFCD66D4\n" //workQInit "BL sub_FFC012B0\n" "MOV R4, #0\n" "MOV R3, R0\n" "MOV R12, #0x800\n" "LDR R0, =h_usrRoot\n" "MOV R1, #0x4000\n" "LDR R2, =0xCF2B0\n" // 0x9F2B0 + 0x30000 "STR R12, [SP]\n" "STR R4, [SP,#4]\n" "BL sub_FFCCF558\n" //kernelInit "ADD SP, SP, #8\n" "LDMFD SP!, {R4,PC}\n" );}...void h_usrRoot(){ asm volatile ( "STMFD SP!, {R4,R5,LR}\n" "MOV R5, R0\n" "MOV R4, R1\n" "BL sub_FFC019D0\n" "MOV R1, R4\n" "MOV R0, R5\n" "BL sub_FFCC6CA4\n" //memInit "MOV R1, R4\n" "MOV R0, R5\n" "BL sub_FFCC771C\n" //memPartLibInit //"BL sub_FFC017E8\n" //nullsub_1 "BL sub_FFC01704\n" "BL sub_FFC01A0C\n" "BL sub_FFC019F0\n" "BL sub_FFC01A38\n" "BL sub_FFC019C4\n" ); _taskCreateHookAdd(createHook); _taskDeleteHookAdd(deleteHook); drv_self_hide(); asm volatile ( "LDMFD SP!, {R4,R5,LR}\n" "B sub_FFC0136C\n" //IsEmptyWriteCache_2 );}
#find in IDANHSTUB(Close, 0xFFCC5108)NHSTUB(Remove, 0xFFCC549C) #near unmountNHSTUB(Mount_FileSystem, 0xFFE214C4)#there are readv and writev?! ...is it the same?NHSTUB(Read, 0xFFCC5334) NHSTUB(Write, 0xFFCC53B0)NHSTUB(kbd_read_keys_r2, 0xFF?)NHSTUB(DisplayImagePhysicalScreen, 0xFF?)NHSTUB(free, 0xFF?)NHSTUB(SetZoomActuatorSpeedPercent, 0xFF?) //null stub
void boot(){ long *canon_data_src = (void*)0xFFEDE3C0; long *canon_data_dst = (void*)0x1900; long canon_data_len = 0xB8D0; long *canon_bss_start = (void*)0xD1D0; long canon_bss_len = 0x91C70 - 0xD1D0;[...]
ROM:FFC0017C off_FFC0017C DCD unk_FFEDE3C0 ; DATA XREF: ROM:FFC0010
[commented out]char *hook_raw_image_addr(){ return (char*)0x105B8AC0; // OK (find on ".crw")}long hook_raw_size(){ return 0x75A8F0; // OK (find on ".crw")}[commented out]void *vid_get_bitmap_fb(){ return (void*)0x103C79A0; // OK (find in _CreatePhysicalVram)}void *vid_get_viewport_fb(){ return (void*)0x105F17A0; // OK (find on "VRAM Address : %p")}void *vid_get_viewport_fb_d(){ return (void*)(*(int*)0x60BA0); // OK (find on "WBTblAdj.c")}[...]
#include "stubs_asm.h"NHSTUB(VbattGet, 0xFFC1C000) //found w/ IDANHSTUB(free, 0xFFC0A748) //not found yet (used FreeMemory)//null stub (S2/S3 only apparently)NHSTUB(SetZoomActuatorSpeedPercent, 0xFFC017E8) //used nullsub_1
Could someone perhaps give us some hints on how to find these things for lib.c and stubs_entry_2.S?
void *vid_get_bitmap_fb()void *vid_get_viewport_fb()void *vid_get_viewport_fb_d()