Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 93cb927

Browse files
committedJun 22, 2024
Patcher: Edit struct names in patcher.
1 parent f7e2320 commit 93cb927

File tree

3 files changed

+34
-34
lines changed

3 files changed

+34
-34
lines changed
 

‎Config/DualBoot.Sm8150.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
StackBase=0x9FC00000
2-
StackSize=0x00300000
2+
StackSize=0x00300000

‎patcher.c

+29-29
Original file line numberDiff line numberDiff line change
@@ -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
*/
201201
uint8_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+
}

‎patcher.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
#include <stdint.h>
1313

1414
//
15-
// Stack info read from config file and set to kernel.
15+
// Config info read from config file and set to kernel.
1616
//
1717
typedef struct {
1818
uint64_t StackBase;
1919
uint64_t StackSize;
20-
} Stack, *pStack;
20+
} Config, *pConfig;
2121

2222
//
2323
// Store some file information and file buffer.
@@ -34,9 +34,9 @@ uint8_t *read_file_content(FileContent *fileContent);
3434

3535
int write_file_content(pFileContent fileContent);
3636

37-
int parse_config(FileContent *fileContent, pStack stack);
37+
int parse_config(FileContent *fileContent, pConfig config);
3838

3939
uint8_t *PatchKernel(pFileContent kernel, pFileContent uefi, pFileContent shellCode,
40-
pFileContent patchedKernel, pStack stack);
40+
pFileContent patchedKernel, pConfig config);
4141

4242
#endif //LINUX_KERNEL_PATCHER_PATCHER_H

0 commit comments

Comments
 (0)
Please sign in to comment.