@@ -65,7 +65,7 @@ int main(int argc, char *argv[]) {
65
65
read_file_content (& uefiImage );
66
66
67
67
// Parse config file.
68
- Stack stack = {0 };
68
+ Config stack = {0 };
69
69
if (parse_config (& config , & stack )) {
70
70
printf ("Error: Parse config failed\n" );
71
71
return - EINVAL ;
@@ -158,11 +158,11 @@ int write_file_content(pFileContent fileContent) {
158
158
* Parse given config.
159
159
*
160
160
* @param fileContent
161
- * @param stack Stack info read from config file
161
+ * @param config Config info read from config file
162
162
* @retval -EINVAL Give File not found.
163
163
*
164
164
*/
165
- int parse_config (FileContent * fileContent , pStack stack ) {
165
+ int parse_config (FileContent * fileContent , pConfig config ) {
166
166
// Check file size
167
167
if (!get_file_size (fileContent ))
168
168
return - EINVAL ;
@@ -175,9 +175,9 @@ int parse_config(FileContent *fileContent, pStack stack) {
175
175
// Parse
176
176
while (fscanf (pConfigFile , "%[^=]=%x\n" , key , & value ) != EOF ) {
177
177
if (strcmp (key , "StackBase" ) == 0 ) {
178
- stack -> StackBase = value ;
178
+ config -> StackBase = value ;
179
179
} else if (strcmp (key , "StackSize" ) == 0 ) {
180
- stack -> StackSize = value ;
180
+ config -> StackSize = value ;
181
181
}
182
182
}
183
183
@@ -193,13 +193,13 @@ int parse_config(FileContent *fileContent, pStack stack) {
193
193
* @param[in] uefi uefi fd fileContent
194
194
* @param[in] shellCode shell code binary
195
195
* @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
197
197
*
198
198
* @return patched kernel buffer
199
199
*
200
200
*/
201
201
uint8_t * PatchKernel (pFileContent kernel , pFileContent uefi , pFileContent shellCode ,
202
- pFileContent patchedKernel , pStack stack ) {
202
+ pFileContent patchedKernel , pConfig config ) {
203
203
// Allocate output buffer
204
204
patchedKernel -> fileSize = kernel -> fileSize + uefi -> fileSize ;
205
205
patchedKernel -> fileBuffer = malloc (patchedKernel -> fileSize );
@@ -298,27 +298,27 @@ uint8_t *PatchKernel(pFileContent kernel, pFileContent uefi, pFileContent shellC
298
298
patchedKernel -> fileBuffer [2 ] = 0 ;
299
299
patchedKernel -> fileBuffer [3 ] = 0x14 ;
300
300
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 ;
322
322
323
323
// Finally, we add in the total kernel image size because we need to jump over!
324
324
patchedKernel -> fileBuffer [0x30 ] = kernel -> fileSize >> 0 & 0xFF ;
@@ -349,4 +349,4 @@ uint8_t *PatchKernel(pFileContent kernel, pFileContent uefi, pFileContent shellC
349
349
// And that's it, the user now can append executable code right after the kernel,
350
350
// and upon closing up the device said code will run at boot. Have fun!
351
351
return patchedKernel -> fileBuffer ;
352
- }
352
+ }
0 commit comments