[Defy Android Development] sunoldman:
Have you tested it?

From the collected information, I speculated that moto use both RSA and checksum to check the sbf file in bootloader mode.

Every CGxx.smg has been signed except some with signature type 0.

So if we find the checksum algorithm. We can upload files to these none signature partitions(e.g. pds）

Am I right？

[root@localhost sbf]# ./sbf_flash -v -r
SBF FLASH 1.23 (mbm)
http://opticaldelusion.org

>> waiting for phone: Connected.
nfields 7
CG_num: 64
CG_name: mbr
signature_type: 1
start_addr: 0xb0000000
end_addr: 0xb001ffff
signature_start_addr: 0x83003800
signature_end_addr: 0x83003fff

CG_num: 63
CG_name: mbmloader
signature_type: 0
start_addr: 0xb0020000
end_addr: 0xb003ffff
signature_start_addr: 0x8701ff80
signature_end_addr: 0x8702077f

CG_num: 30
CG_name: mbm
signature_type: 0
start_addr: 0xb0080000
end_addr: 0xb00fffff
signature_start_addr: 0x8934f800
signature_end_addr: 0x8934ffff

CG_num: 55
CG_name: mbmbackup
signature_type: 0
start_addr: 0xb0100000
end_addr: 0xb017ffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 65
CG_name: ebr
signature_type: 1
start_addr: 0xb0180000
end_addr: 0xb01fffff
signature_start_addr: 0x83013800
signature_end_addr: 0x83013fff

CG_num: 56
CG_name: bploader
signature_type: 0
start_addr: 0xb0200000
end_addr: 0xb027ffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 31
CG_name: cdt.bin
signature_type: 1
start_addr: 0xb0280000
end_addr: 0xb02fffff
signature_start_addr: 0x89073800
signature_end_addr: 0x89073fff

CG_num: 38
CG_name: pds
signature_type: 0
start_addr: 0xb0300000
end_addr: 0xb06fffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 34
CG_name: lbl
signature_type: 1
start_addr: 0xb0700000
end_addr: 0xb077ffff
signature_start_addr: 0x80d03800
signature_end_addr: 0x80d03fff

CG_num: 57
CG_name: lbl_backup
signature_type: 1
start_addr: 0xb0780000
end_addr: 0xb07fffff
signature_start_addr: 0x80d03800
signature_end_addr: 0x80d03fff

CG_num: 42
CG_name: logo.bin
signature_type: 0
start_addr: 0xb0800000
end_addr: 0xb08fffff
signature_start_addr: 0x86f6f800
signature_end_addr: 0x86f6ffff

CG_num: 41
CG_name: sp
signature_type: 0
start_addr: 0xb0900000
end_addr: 0xb0afffff
signature_start_addr: 0x892af800
signature_end_addr: 0x892affff

CG_num: 61
CG_name: devtree
signature_type: 1
start_addr: 0xb0b00000
end_addr: 0xb0b7ffff
signature_start_addr: 0x8910f800
signature_end_addr: 0x8910ffff

CG_num: 62
CG_name: devtree_backup
signature_type: 1
start_addr: 0xb0b80000
end_addr: 0xb0bfffff
signature_start_addr: 0x8910f800
signature_end_addr: 0x8910ffff

CG_num: 45
CG_name: bpsw
signature_type: 2
start_addr: 0xb0c00000
end_addr: 0xb0ffffff
signature_start_addr: 0x644ff800
signature_end_addr: 0x644fffff

CG_num: 35
CG_name: boot
signature_type: 1
start_addr: 0xb1000000
end_addr: 0xb17fffff
signature_start_addr: 0x818ff800
signature_end_addr: 0x818fffff

CG_num: 47
CG_name: recovery
signature_type: 1
start_addr: 0xb1800000
end_addr: 0xb1ffffff
signature_start_addr: 0x818ff800
signature_end_addr: 0x818fffff

CG_num: 33
CG_name: cdrom
signature_type: 5
start_addr: 0xb2000000
end_addr: 0xb2dfffff
signature_start_addr: 0x8bdbf800
signature_end_addr: 0x8bdbffff

CG_num: 44
CG_name: misc
signature_type: 0
start_addr: 0xb2e00000
end_addr: 0xb2e7ffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 43
CG_name: cid
signature_type: 0
start_addr: 0xb2e80000
end_addr: 0xb2efffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 53
CG_name: kpanic
signature_type: 0
start_addr: 0xb2f00000
end_addr: 0xb32fffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 39
CG_name: system
signature_type: 5
start_addr: 0xb3300000
end_addr: 0xc79fffff
signature_start_addr: 0x9efbf800
signature_end_addr: 0x9efbffff

CG_num: 32
CG_name: prek
signature_type: 1
start_addr: 0xc7a00000
end_addr: 0xc7a7ffff
signature_start_addr: 0x8a71f800
signature_end_addr: 0x8a71ffff

CG_num: 46
CG_name: pkbackup
signature_type: 1
start_addr: 0xc7a80000
end_addr: 0xc7afffff
signature_start_addr: 0x8a71f800
signature_end_addr: 0x8a71ffff

CG_num: 40
CG_name: cache
signature_type: 0
start_addr: 0xc7b00000
end_addr: 0xd42fffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff

CG_num: 37
CG_name: userdata
signature_type: 0
start_addr: 0xd4300000
end_addr: 0xefffffff
signature_start_addr: 0xffffffff
signature_end_addr: 0xffffffff
+27

Usage: ./sbf_flash <filename>

About the signature, I think Simplestas could explain it more clearly.

http://xdaforums.com/showpost.php?p=11195138&postcount=3