.crp is quite simple format. No encrypted, no compressed and straightforward organized.
Textures are stored as DDS and extract/replacing ( without changing its size ) is just copying bytes from source DDS to .crp at right offset.
Fastest way: Open .crp file with hex-editor, search for "UnityEngine.Texture2D". Place cursor after this string, move forward with 89 bytes. This DWORD holds texture size in bytes. After him you see "DDS", there are first bytes of plain DDS texture file. Just copy whole block of that size to new file and save it as .dds. Open it with graphics editor like Photoshop or Gimp and voila
After modifying dds, save changes. open this file with hex-editor and copy whole content back to .crp file at same place where original texture reside.
Remember: .crp is binary file, so it strongly offset-based. As long as your modified blocks have same size as original - it's safety.
But when you want replace original texture with more detailed ( bigger ), then you need rewrite whole file with appropiate offsets adjusting. Of course it is possible 'by hand', but more difficult.
PS. English is not my native language, so sorry for any typo or sth