Una forma mas facil:
Si tienes tu MAIN en formato .mbn, extraelo con main2raw, y aparece esto:

Ejemplo: Con el MAIN de W300 R4EA031
Código:
(#)main2raw v2.1 by Darkmen <sephone@nm.ru> 25.10.2006
(#)Converts ssw image to raw image for SonyEricsson phones
(#)db2000, db2010, db2020 ssw format detection

Loading W300_R4EA031_MAIN_GENERIC_JE_RED49.mbn header as 2010...OK!
SSW uses dinamic hash len: 336
Skiping hash section...0150OK!
Loading entry file W300_R4EA031_MAIN_GENERIC_JE_RED49.mbn to memory...OK! $014FD
164 bytes has been read
Allocating memory for raw image: $02000000 (32Mb)
First flash block offset: $44140000
Start flashing..................................................................
................................................................................
................................................................................
................................................................................
..............................OK!
$0150 blok(s) flashed successfull
Last flash block offset: $45630000, length: $0000C6E4
Writing raw image file W300_R4EA031_MAIN_GENERIC_JE_RED49.raw ...OK! $014FC6E4 b
ytes has been writen
Task finished! Press ENTER to quit...
SSW uses dinamic hash len: 336
Ahi dice que tiene: 336 bloques, o "$0150 blok(s) flashed successfull", la longitud sería: 1500000

O tambien:
Writing raw image file W300_R4EA031_MAIN_GENERIC_JE_RED49.raw ...OK! $014FC6E4 bytes has been writen

Length = $014FC6E4

Pero, siempre es bueno considerar longitud extra, dependiendo de los parches "avanzados", como sysgfx, que van fuera del MAIN
En ese caso, revisa la ultima linea de los varios parches .vkp que tengas, y toma el numero mayor
Ejemplo: 15b5670
Pero en esa linea todavia hay datos, y se puede "redondear" a: 15b6000
Ese valor lo tomas como length

Tambien puedes leer más datos, hasta antes de que empiece la FS (FS empieza en $45800000 en K310/K510/Z530/Z550/W300, $45900000 en W810), y se tiene este valor: 16C0000, tomando como referencia que la FS empieza en $45800000

Son 364 bloques, en DB2010; al final del MAIN vas a encontrar bastante espacio en blanco que contiene FFFFFFFFFF...

Para no estar calculando y todo lo demas, se puede tomar este valor: 16C0000, que serían 364 bloques, en forma general para DB2010