@@ -185,26 +185,14 @@ void enumerate_segments() {
185185
186186 memset (segment_ptr , 0 , sizeof (Self_Segment ));
187187
188- // these are choices you can make
189- /*segment_ptr->compressed = (i<2);
190- segment_ptr->incrypt = (i<6); // **TESTING
191- segment_ptr->encrypted = (i<5);*/
188+ segment_ptr -> rlen = get_u64 (& (elf_segment -> p_filesz ));
192189
193- #ifdef NPDRM
194- segment_ptr -> encrypted = (i < 5 );
195- segment_ptr -> compressed = (i < 4 );
196- segment_ptr -> incrypt = (i < 7 );
197- #else
198190 segment_ptr -> encrypted = 1 ;
199- segment_ptr -> compressed = 1 ;
191+ segment_ptr -> compressed = segment_ptr -> rlen != 0 ;
200192 segment_ptr -> incrypt = 1 ;
201- #endif
202193
203194 set_u32 (& (segment_ptr -> enc_segment .segment_number ), i );
204195
205- set_u32 (& (segment_ptr -> enc_segment .unknown2 ), 2 );
206- set_u32 (& (segment_ptr -> enc_segment .unknown3 ), 3 );
207-
208196 mpz_urandomb (hmac , r_state , 512 );
209197 mpz_export (segment_ptr -> crypt_segment .hmac , & countp , 1 , 0x40 , 1 , 0 , hmac );
210198
@@ -215,8 +203,6 @@ void enumerate_segments() {
215203 mpz_export (segment_ptr -> crypt_segment .riv , & countp , 1 , 0x10 , 1 , 0 , riv );
216204 }
217205
218- segment_ptr -> rlen = get_u64 (& (elf_segment -> p_filesz ));
219-
220206 u32 in_data_offset = get_u64 (& (elf_segment -> p_offset ));
221207 u8 * in_data = & input_elf_data [in_data_offset ];
222208
@@ -252,7 +238,9 @@ void enumerate_segments() {
252238 //hexdump((u8*)elf_segment, sizeof(Elf64_Phdr));
253239
254240 set_u64 (& (segment_ptr -> enc_segment .segment_size ), segment_ptr -> len );
255- set_u32 (& (segment_ptr -> enc_segment .segment_crypt_flag ), 1 + segment_ptr -> encrypted );
241+ set_u32 (& (segment_ptr -> enc_segment .segment_type ), 2 );
242+ set_u32 (& (segment_ptr -> enc_segment .segment_hashed_flag ), 2 );
243+ set_u32 (& (segment_ptr -> enc_segment .segment_encrypted_flag ), segment_ptr -> encrypted ? 3 : 1 );
256244 set_u32 (& (segment_ptr -> enc_segment .segment_compressed_flag ), 1 + segment_ptr -> compressed );
257245
258246 set_u64 (& (segment_ptr -> pmhdr .pm_size ), segment_ptr -> len );
@@ -494,10 +482,6 @@ int main(int argc, char* argv[]) {
494482 // 0x*** -- Self_SDKversion
495483 set_u64 (& (output_extended_self_header .e_svoff ), running_size );
496484 add_file_section (& sdkversion , sizeof (sdkversion ));
497- // 0x*** -- ???
498- #ifdef NPDRM
499- add_file_section (zero_padding , 0x20 );
500- #endif
501485 // 0x*** -- Self_Cflags
502486 set_u64 (& (output_extended_self_header .e_cfoff ), running_size );
503487 add_file_section (& cflags , sizeof (cflags ));
0 commit comments