@@ -62,7 +62,7 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
6262 UINT32 MachoInfoSize ;
6363 PMACHO_HEADER MachoHeader ;
6464 PMACHO_SEGMENT_COMMAND MachoSegmentCommand ;
65- PMACHO_SECTION MachoSection ;
65+ // PMACHO_SECTION MachoSection;
6666 PMACHO_THREAD_COMMAND_X86 MachoUnixThread ;
6767 UINT32 SizeOfExecData ;
6868
@@ -71,7 +71,7 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
7171
7272 MachoInfoSize = sizeof (MACHO_HEADER )
7373 + sizeof (MACHO_SEGMENT_COMMAND )
74- + sizeof (MACHO_SECTION )
74+ // + sizeof(MACHO_SECTION)
7575 + sizeof (MACHO_THREAD_COMMAND_X86 );
7676
7777 MachoHeader = malloc (MachoInfoSize );
@@ -83,7 +83,7 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
8383
8484 memset (MachoHeader , 0 , MachoInfoSize );
8585
86- SizeOfExecData = PeSize - 0x1000 - 1 ;
86+ SizeOfExecData = PeSize - 0x1000 ;
8787
8888 // Fill out Mach-O header.
8989 MachoHeader -> MagicNumber = MACHO_MAGIC ;
@@ -102,7 +102,7 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
102102 MachoSegmentCommand = (PMACHO_SEGMENT_COMMAND ) (((PUCHAR ) MachoHeader ) + sizeof (MACHO_HEADER ));
103103
104104 MachoSegmentCommand -> Command = MACHO_LC_SEGMENT ;
105- MachoSegmentCommand -> CommandSize = sizeof (MACHO_SEGMENT_COMMAND ) + sizeof ( MACHO_SECTION ) ;
105+ MachoSegmentCommand -> CommandSize = sizeof (MACHO_SEGMENT_COMMAND );
106106
107107 strcpy (MachoSegmentCommand -> SegmentName , "__TEXT" );
108108
@@ -115,9 +115,10 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
115115 MachoSegmentCommand -> MaximumProtection = 7 ; // ???
116116 MachoSegmentCommand -> InitialProtection = 5 ; // ???
117117
118- MachoSegmentCommand -> NumberOfSections = 1 ;
118+ MachoSegmentCommand -> NumberOfSections = 0 ;
119119 MachoSegmentCommand -> Flags = 0 ;
120120
121+ /*
121122 // Fill out first and only section.
122123 MachoSection = (PMACHO_SECTION) (((PUCHAR) MachoSegmentCommand) + sizeof(MACHO_SEGMENT_COMMAND));
123124
@@ -140,6 +141,8 @@ CreateMachOHeaderFromPeHeader(PIMAGE_OPTIONAL_HEADER32 OptionalHeader, UINT32 Pe
140141
141142 // Fill out second load command.
142143 MachoUnixThread = (PMACHO_THREAD_COMMAND_X86) (((PUCHAR) MachoSection) + sizeof(MACHO_SECTION));
144+ */
145+ MachoUnixThread = (PMACHO_THREAD_COMMAND_X86 ) (((PUCHAR ) MachoSegmentCommand ) + sizeof (MACHO_SEGMENT_COMMAND ));
143146
144147 MachoUnixThread -> Command = MACHO_LC_UNIXTHREAD ;
145148 MachoUnixThread -> CommandSize = sizeof (MACHO_THREAD_COMMAND_X86 );
0 commit comments