diff --git a/selfpatch/src/targets.c b/selfpatch/src/targets.c index 3e784bf..6c18dff 100644 --- a/selfpatch/src/targets.c +++ b/selfpatch/src/targets.c @@ -17,7 +17,7 @@ struct Field { uint32_t offset; uint32_t size; - uint32_t flags; + uint32_t flags; // TODO -> fixed flag! }; struct FinalField { @@ -285,7 +285,18 @@ int spslr_randomize(uint32_t target) { for (uint32_t i = 0; i < shuffle_count; i++) target_shuffle_one(t); - // TODO final_fields + // Compile array of final fields + t->final_fields = (struct FinalField*)malloc(sizeof(struct FinalField) * t->field_count); + if (!t->final_fields) + return -1; + + for (uint32_t i = 0; i < t->field_count; i++) { + const struct Field* f = &t->fields[i]; + struct FinalField* ff = &t->final_fields[f->initial_idx]; + + ff->initial_offset = f->initial_offset; + ff->offset = f->offset; + } return 0; }