@@ -65,7 +65,7 @@ int main(int argc, char *argv[]) {
6565 read_file_content (& uefiImage );
6666
6767 // Parse config file.
68- Stack stack = {0 };
68+ Config stack = {0 };
6969 if (parse_config (& config , & stack )) {
7070 printf ("Error: Parse config failed\n" );
7171 return - EINVAL ;
@@ -158,11 +158,11 @@ int write_file_content(pFileContent fileContent) {
158158 * Parse given config.
159159 *
160160 * @param fileContent
161- * @param stack Stack info read from config file
161+ * @param config Config info read from config file
162162 * @retval -EINVAL Give File not found.
163163 *
164164 */
165- int parse_config (FileContent * fileContent , pStack stack ) {
165+ int parse_config (FileContent * fileContent , pConfig config ) {
166166 // Check file size
167167 if (!get_file_size (fileContent ))
168168 return - EINVAL ;
@@ -175,9 +175,9 @@ int parse_config(FileContent *fileContent, pStack stack) {
175175 // Parse
176176 while (fscanf (pConfigFile , "%[^=]=%x\n" , key , & value ) != EOF ) {
177177 if (strcmp (key , "StackBase" ) == 0 ) {
178- stack -> StackBase = value ;
178+ config -> StackBase = value ;
179179 } else if (strcmp (key , "StackSize" ) == 0 ) {
180- stack -> StackSize = value ;
180+ config -> StackSize = value ;
181181 }
182182 }
183183
@@ -193,13 +193,13 @@ int parse_config(FileContent *fileContent, pStack stack) {
193193 * @param[in] uefi uefi fd fileContent
194194 * @param[in] shellCode shell code binary
195195 * @param[in,out] patchedKernel patched kernel fileContent
196- * @param[in] stack stack info read from config
196+ * @param[in] config config info read from config
197197 *
198198 * @return patched kernel buffer
199199 *
200200 */
201201uint8_t * PatchKernel (pFileContent kernel , pFileContent uefi , pFileContent shellCode ,
202- pFileContent patchedKernel , pStack stack ) {
202+ pFileContent patchedKernel , pConfig config ) {
203203 // Allocate output buffer
204204 patchedKernel -> fileSize = kernel -> fileSize + uefi -> fileSize ;
205205 patchedKernel -> fileBuffer = malloc (patchedKernel -> fileSize );
@@ -298,27 +298,27 @@ uint8_t *PatchKernel(pFileContent kernel, pFileContent uefi, pFileContent shellC
298298 patchedKernel -> fileBuffer [2 ] = 0 ;
299299 patchedKernel -> fileBuffer [3 ] = 0x14 ;
300300
301- // Now we need to fill in the stack base of our firmware
302- // Stack Base: 0x00000000 9FC00000 (64 bit!)
303- patchedKernel -> fileBuffer [0x20 ] = stack -> StackBase >> 0 & 0xFF ;
304- patchedKernel -> fileBuffer [0x21 ] = stack -> StackBase >> 8 & 0xFF ;
305- patchedKernel -> fileBuffer [0x22 ] = stack -> StackBase >> 16 & 0xFF ;
306- patchedKernel -> fileBuffer [0x23 ] = stack -> StackBase >> 24 & 0xFF ;
307- patchedKernel -> fileBuffer [0x24 ] = stack -> StackBase >> 32 & 0xFF ;
308- patchedKernel -> fileBuffer [0x25 ] = stack -> StackBase >> 40 & 0xFF ;
309- patchedKernel -> fileBuffer [0x26 ] = stack -> StackBase >> 48 & 0xFF ;
310- patchedKernel -> fileBuffer [0x27 ] = stack -> StackBase >> 56 & 0xFF ;
311-
312- // Then we need to fill in the stack size of our firmware
313- // Stack Base: 0x00000000 00300000 (64 bit!)
314- patchedKernel -> fileBuffer [0x28 ] = stack -> StackSize >> 0 & 0xFF ;
315- patchedKernel -> fileBuffer [0x29 ] = stack -> StackSize >> 8 & 0xFF ;
316- patchedKernel -> fileBuffer [0x2A ] = stack -> StackSize >> 16 & 0xFF ;
317- patchedKernel -> fileBuffer [0x2B ] = stack -> StackSize >> 24 & 0xFF ;
318- patchedKernel -> fileBuffer [0x2C ] = stack -> StackSize >> 32 & 0xFF ;
319- patchedKernel -> fileBuffer [0x2D ] = stack -> StackSize >> 40 & 0xFF ;
320- patchedKernel -> fileBuffer [0x2E ] = stack -> StackSize >> 48 & 0xFF ;
321- patchedKernel -> fileBuffer [0x2F ] = stack -> StackSize >> 56 & 0xFF ;
301+ // Now we need to fill in the config base of our firmware
302+ // Config Base: 0x00000000 9FC00000 (64 bit!)
303+ patchedKernel -> fileBuffer [0x20 ] = config -> StackBase >> 0 & 0xFF ;
304+ patchedKernel -> fileBuffer [0x21 ] = config -> StackBase >> 8 & 0xFF ;
305+ patchedKernel -> fileBuffer [0x22 ] = config -> StackBase >> 16 & 0xFF ;
306+ patchedKernel -> fileBuffer [0x23 ] = config -> StackBase >> 24 & 0xFF ;
307+ patchedKernel -> fileBuffer [0x24 ] = config -> StackBase >> 32 & 0xFF ;
308+ patchedKernel -> fileBuffer [0x25 ] = config -> StackBase >> 40 & 0xFF ;
309+ patchedKernel -> fileBuffer [0x26 ] = config -> StackBase >> 48 & 0xFF ;
310+ patchedKernel -> fileBuffer [0x27 ] = config -> StackBase >> 56 & 0xFF ;
311+
312+ // Then we need to fill in the config size of our firmware
313+ // Config Base: 0x00000000 00300000 (64 bit!)
314+ patchedKernel -> fileBuffer [0x28 ] = config -> StackSize >> 0 & 0xFF ;
315+ patchedKernel -> fileBuffer [0x29 ] = config -> StackSize >> 8 & 0xFF ;
316+ patchedKernel -> fileBuffer [0x2A ] = config -> StackSize >> 16 & 0xFF ;
317+ patchedKernel -> fileBuffer [0x2B ] = config -> StackSize >> 24 & 0xFF ;
318+ patchedKernel -> fileBuffer [0x2C ] = config -> StackSize >> 32 & 0xFF ;
319+ patchedKernel -> fileBuffer [0x2D ] = config -> StackSize >> 40 & 0xFF ;
320+ patchedKernel -> fileBuffer [0x2E ] = config -> StackSize >> 48 & 0xFF ;
321+ patchedKernel -> fileBuffer [0x2F ] = config -> StackSize >> 56 & 0xFF ;
322322
323323 // Finally, we add in the total kernel image size because we need to jump over!
324324 patchedKernel -> fileBuffer [0x30 ] = kernel -> fileSize >> 0 & 0xFF ;
@@ -349,4 +349,4 @@ uint8_t *PatchKernel(pFileContent kernel, pFileContent uefi, pFileContent shellC
349349 // And that's it, the user now can append executable code right after the kernel,
350350 // and upon closing up the device said code will run at boot. Have fun!
351351 return patchedKernel -> fileBuffer ;
352- }
352+ }
0 commit comments