First off, I don't have any experience with this one. But it looks like it encodes/decodes with an XTEA algorithm. Key is a 16 byte code. Here is some info on it from their readme file. And best of all, it is free.

I would think that hex is hex, and whether it is PBP, CCS, etc, the hex would not look any different to a bootloader.

http://www.diolan.com/pic/bootloader_dwn.html

Code:
XTEA Encoder/Decoder
====================

XTEA Algorithm backgrounds
---------------------------
The XTEA encoder/decoder input byte stream is separated into 8 byte chunks
    [ b0 b1 b2 b3 b4 b5 b6 b7 ], [ b8 b9 ........... ], ...
Chunk is treated as two 32 bit little endian integers x1 and x2.
    For chunk0:
        x1 = (b3<<24) + (b2<<16) + (b1<<8) + b0
        x2 = (b4<<24) + (b5<<16) + (b6<<8) + b7
        
Encoding/Decoding is performed for every single chunk.

KEY is a 16 bytes string treated as key[4], where key[i] is 
32 bit little endian integer 
    KEY k0 k1 k2 k3 k4 ..... k15
        key[0] = (k3<<24) + (k2<<16) + (k1<<8) + k0 
    
DELTA is 32 bit integer constant 
    DELTA = 0x9E3779B9
    
Chunk Encoding:
    sum=0;
    for( i=0; i<XTEA_ITER; i++ )
    {
            x1 += (((x2<<4) ^ (x2>>5)) + x2) ^ (sum + key[sum&0x03]);
        sum+= DELTA;
        x2 += (((x1<<4) ^ (x1>>5)) + x1) ^ (sum + $KEY[(sum>>11)&0x03]);
    }
    
Chunk Decoding:
    sum = DELTA* XTEA_ITER;
        for( i=0; i<XTEA_ITER; i++ )
    {
        x2 -= (((x1<<4) ^ (x1>>5)) + x1) ^ (sum + key[(sum>>11)&0x03]);
        sum-= DELTA;
            x1 -= (((x2<<4) ^ (x2>>5)) + x2) ^ (sum + key[sum&0x03]);
    }        

        
XTEA Encoder/Decoder configuration
----------------------------------    
You can change following parameters to configure XTEA encoder/decoder

- XTEA encoder/decoder KEY

File        : xtea.asm
Identifier    : XTEA_KEY

- XTEA encoder/decoder number of iterations
    
File        : xtea.asm 
Identifier    : XTEA_ITERATIONS and DELTA_ITER

The number of iterations defines level of security. The 16 iterations are
quite enough for bootloader. Default value is 64 iterations.
If you change number of iterations do not forget to change DELTA_ITER,
that is precalculated value of DELTA*XTEA_ITERATIONS used by decoder 

Example:
        XTEA_ITERATIONS    equ     0x40            ; Number of iterations on x1,x2
    DELTA_ITER      db      0x40,0x6e,0xde,0x8d     ; Delta*XTEA_ITERATIONS
    

Code Protection
===============
Following Configuration Registers settings are recomended to secure 
FW from anauthorised access and protect bootloader section from undesired 
changes by external or internall agent. This setting will allow proper 
operation of bootloader but will not let any external access to FW.

Config Register  Value  Description
0x300006.bit7    1    
            Background Debug         Disabled
0x300008        0x08
            Code Protect 0x0800-0x1FFF  Enabled
            Code Protect 0x2000-0x3FFF  Enabled
            Code Protect 0x4000-0x5FFF  Enabled
0x300009    0x80
            Data EE Read Protect        Disabled
            Code Protect Boot        Enabled
0x30000A    0x0F
            Table Write Protect 0x0800-0x1FFF  Disabled
            Table Write Protect 0x2000-0x3FFF  Disabled
            Table Write Protect 0x4000-0x5FFF  Disabled
0x30000B    0x80
            Data EE Write Protect       Disabled
            Table Write Protect Boot    Enabled
            Config Write Protect        Enabled
0x30000C    0x0F
            Table Read  Protect 0x0800-0x1FFF  Disabled
            Table Read  Protect 0x2000-0x3FFF  Disabled
            Table Read  Protect 0x4000-0x5FFF  Disabled
0x30000D    0x00
            Table Read Protect Boot        Enabled