SHARE
TWEET

Untitled

a guest Sep 21st, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define UNLOADED_FILE   1
  2. #include <idc.idc>
  3.  
  4. static main(void)
  5. {
  6.   // set 'loading idc file' mode
  7.   set_inf_attr(INF_GENFLAGS, INFFL_LOADIDC|get_inf_attr(INF_GENFLAGS));
  8.   GenInfo();            // various settings
  9.   Segments();           // segmentation
  10.   Enums();              // enumerations
  11.   Structures();         // structure types
  12.   ApplyStrucTInfos();   // structure type infos
  13.   Patches();            // manual patches
  14.   SegRegs();            // segment register values
  15.   Bytes();              // individual bytes (code,data)
  16.   Functions();          // function definitions
  17.   // clear 'loading idc file' mode
  18.   set_inf_attr(INF_GENFLAGS, ~INFFL_LOADIDC&get_inf_attr(INF_GENFLAGS));
  19. }
  20.  
  21. //------------------------------------------------------------------------
  22. // General information
  23.  
  24. static GenInfo(void) {
  25.  
  26.         delete_all_segments();    // purge database
  27.     set_processor_type("ARM", SETPROC_USER);
  28.     set_inf_attr(INF_COMPILER, 6);
  29.     set_inf_attr(INF_STRLIT_BREAK, 0xA);
  30.     set_flag(INF_CMTFLAG, SW_ALLCMT, 0);
  31.     set_flag(INF_OUTFLAGS, OFLG_SHOW_VOID, 0);
  32.     set_inf_attr(INF_XREFNUM, 2);
  33.     set_flag(INF_OUTFLAGS, OFLG_SHOW_AUTO, 1);
  34.     set_inf_attr(INF_INDENT, 16);
  35.     set_inf_attr(INF_COMMENT, 40);
  36.     set_inf_attr(INF_MAXREF, 0x10);
  37.     add_default_til("gnulnx_arm64");
  38. }
  39.  
  40. //------------------------------------------------------------------------
  41. // Information about segmentation
  42.  
  43. static Segments(void) {
  44.     ;
  45.     add_segm_ex(0X80315000,0X80317BEC,0,2,1,2,ADDSEG_NOSREG);
  46.     SegRename(0X80315000,".text");
  47.     SegClass (0X80315000,"CODE");
  48.     SegDefReg(0x80315000,"T",0x0);
  49.     SegDefReg(0x80315000,"DS",0x0);
  50.     set_segm_type(0X80315000,2);
  51.     add_segm_ex(0X80317BEC,0X80317BF0,0,2,1,2,ADDSEG_NOSREG);
  52.     SegRename(0X80317BEC,".rodata");
  53.     SegClass (0X80317BEC,"CONST");
  54.     SegDefReg(0x80317BEC,"T",0x0);
  55.     SegDefReg(0x80317BEC,"DS",0x0);
  56.     set_segm_type(0X80317BEC,3);
  57.     add_segm_ex(0X80317BF0,0X80317C98,0,2,1,2,ADDSEG_NOSREG);
  58.     SegRename(0X80317BF0,".rela.dyn");
  59.     SegClass (0X80317BF0,"CONST");
  60.     SegDefReg(0x80317BF0,"T",0x0);
  61.     SegDefReg(0x80317BF0,"DS",0x0);
  62.     set_segm_type(0X80317BF0,3);
  63.     add_segm_ex(0X80317C98,0X80317CD0,0,2,1,2,ADDSEG_NOSREG);
  64.     SegRename(0X80317C98,".rodata.1");
  65.     SegClass (0X80317C98,"CONST");
  66.     SegDefReg(0x80317C98,"T",0x0);
  67.     SegDefReg(0x80317C98,"DS",0x0);
  68.     set_segm_type(0X80317C98,3);
  69.     add_segm_ex(0X80317CD0,0X80317D18,0,2,1,2,ADDSEG_NOSREG);
  70.     SegRename(0X80317CD0,".dynsym");
  71.     SegClass (0X80317CD0,"CONST");
  72.     SegDefReg(0x80317CD0,"T",0x0);
  73.     SegDefReg(0x80317CD0,"DS",0x0);
  74.     set_segm_type(0X80317CD0,3);
  75.     add_segm_ex(0X80317D18,0X80317D19,0,2,1,2,ADDSEG_NOSREG);
  76.     SegRename(0X80317D18,".dynstr");
  77.     SegClass (0X80317D18,"CONST");
  78.     SegDefReg(0x80317D18,"T",0x0);
  79.     SegDefReg(0x80317D18,"DS",0x0);
  80.     set_segm_type(0X80317D18,3);
  81.     add_segm_ex(0X80317D19,0X80317D30,0,2,1,2,ADDSEG_NOSREG);
  82.     SegRename(0X80317D19,".rodata.2");
  83.     SegClass (0X80317D19,"CONST");
  84.     SegDefReg(0x80317D19,"T",0x0);
  85.     SegDefReg(0x80317D19,"DS",0x0);
  86.     set_segm_type(0X80317D19,3);
  87.     add_segm_ex(0X80317D30,0X80317E00,0,2,1,2,ADDSEG_NOSREG);
  88.     SegRename(0X80317D30,".dynamic");
  89.     SegClass (0X80317D30,"DATA");
  90.     SegDefReg(0x80317D30,"T",0x0);
  91.     SegDefReg(0x80317D30,"DS",0x0);
  92.     set_segm_type(0X80317D30,3);
  93.     add_segm_ex(0X80317E00,0X80317E80,0,2,1,2,ADDSEG_NOSREG);
  94.     SegRename(0X80317E00,".got");
  95.     SegClass (0X80317E00,"CONST");
  96.     SegDefReg(0x80317E00,"T",0x0);
  97.     SegDefReg(0x80317E00,"DS",0x0);
  98.     set_segm_type(0X80317E00,3);
  99.     add_segm_ex(0X80317E80,0X80317EB0,0,2,1,2,ADDSEG_NOSREG);
  100.     SegRename(0X80317E80,".data");
  101.     SegClass (0X80317E80,"DATA");
  102.     SegDefReg(0x80317E80,"T",0x0);
  103.     SegDefReg(0x80317E80,"DS",0x0);
  104.     set_segm_type(0X80317E80,3);
  105.     add_segm_ex(0X80317EB0,0X80318EB0,0,2,1,2,ADDSEG_NOSREG);
  106.     SegRename(0X80317EB0,".bss");
  107.     SegClass (0X80317EB0,"BSS");
  108.     SegDefReg(0x80317EB0,"T",0x0);
  109.     SegDefReg(0x80317EB0,"DS",0x0);
  110.     set_segm_type(0X80317EB0,9);
  111.     add_segm_ex(0X80319008,0X80319009,0,1,1,2,ADDSEG_NOSREG);
  112.     SegRename(0X80319008,"UNDEF");
  113.     SegClass (0X80319008,"XTRN");
  114.     SegDefReg(0x80319008,"T",0x0);
  115.     SegDefReg(0x80319008,"DS",0x0);
  116.     set_segm_type(0X80319008,1);
  117.     set_inf_attr(INF_LOW_OFF, 0x80315000);
  118.     set_inf_attr(INF_HIGH_OFF, 0x80319009);
  119. }
  120.  
  121. //------------------------------------------------------------------------
  122. // Information about enum types
  123.  
  124. static Enums(void) {
  125.         auto id;
  126.         begin_type_updating(UTP_ENUM);
  127.         end_type_updating(UTP_ENUM);
  128. }
  129.  
  130. static ApplyStrucTInfos_0(void) {
  131.         auto id;
  132.     id = get_struc_id("KInitialPageAllocator");
  133.     SetType(get_member_id(id, 0x0), "KInitialPageAllocator_vt *");
  134.     SetType(get_member_id(id, 0x8), "_QWORD");
  135.     id = get_struc_id("KernelMap");
  136.     SetType(get_member_id(id, 0x0), "_DWORD");
  137.     SetType(get_member_id(id, 0x4), "_DWORD");
  138.     SetType(get_member_id(id, 0x8), "_DWORD");
  139.     SetType(get_member_id(id, 0xC), "_DWORD");
  140.     SetType(get_member_id(id, 0x10), "_DWORD");
  141.     SetType(get_member_id(id, 0x14), "_DWORD");
  142.     SetType(get_member_id(id, 0x18), "_DWORD");
  143.     SetType(get_member_id(id, 0x1C), "_DWORD");
  144.     SetType(get_member_id(id, 0x20), "_DWORD");
  145.     SetType(get_member_id(id, 0x24), "_DWORD");
  146.     SetType(get_member_id(id, 0x28), "_DWORD");
  147.     SetType(get_member_id(id, 0x2C), "_DWORD");
  148.     id = get_struc_id("KInitialPageAllocator_vt");
  149.     SetType(get_member_id(id, 0x0), "void *(__cdecl *)(KInitialPageAllocator *)");
  150.     SetType(get_member_id(id, 0x8), "void (__cdecl *)(KInitialPageAllocator *)");
  151.     id = get_struc_id("KInitialPageTable");
  152.     SetType(get_member_id(id, 0x0), "void *");
  153.     SetType(get_member_id(id, 0x8), "_DWORD");
  154.     return id;
  155. }
  156.  
  157. //------------------------------------------------------------------------
  158. // Information about type information for structure members
  159.  
  160. static ApplyStrucTInfos() {
  161.     ApplyStrucTInfos_0();
  162. }
  163.  
  164. static Structures_0(id) {
  165.         auto mid;
  166.  
  167.     id = add_struc(-1,"KInitialPageAllocator",0);
  168.     id = add_struc(-1,"KernelMap",0);
  169.     id = add_struc(-1,"KInitialPageAllocator_vt",0);
  170.     id = add_struc(-1,"KInitialPageTable",0);
  171.  
  172.     id = get_struc_id("KInitialPageAllocator");
  173.     mid = add_struc_member(id,"vtable", 0,  0x35500400, 0XFFFFFFFFFFFFFFFF, 8,  0XFFFFFFFFFFFFFFFF, 0,  0x000009);
  174.     mid = add_struc_member(id,"next_address",   0X8,    0x30000400, -1, 8);
  175.     set_struc_align(id,3);
  176.  
  177.     id = get_struc_id("KernelMap");
  178.     mid = add_struc_member(id,"text_offset",    0,  0x20000400, -1, 4);
  179.     mid = add_struc_member(id,"text_end_offset",    0X4,    0x20000400, -1, 4);
  180.     mid = add_struc_member(id,"rodata_offset",  0X8,    0x20000400, -1, 4);
  181.     mid = add_struc_member(id,"rodata_end_offset",  0XC,    0x20000400, -1, 4);
  182.     mid = add_struc_member(id,"rwdata_offset",  0X10,   0x20000400, -1, 4);
  183.     mid = add_struc_member(id,"rwdata_end_offset",  0X14,   0x20000400, -1, 4);
  184.     mid = add_struc_member(id,"bss_offset", 0X18,   0x20000400, -1, 4);
  185.     mid = add_struc_member(id,"bss_end_offset", 0X1C,   0x20000400, -1, 4);
  186.     mid = add_struc_member(id,"ini1_end_offset",    0X20,   0x20000400, -1, 4);
  187.     mid = add_struc_member(id,"dynamic_end_offset", 0X24,   0x20000400, -1, 4);
  188.     mid = add_struc_member(id,"init_array_offset",  0X28,   0x20000400, -1, 4);
  189.     mid = add_struc_member(id,"init_array_end_offset",  0X2C,   0x20000400, -1, 4);
  190.     set_struc_align(id,2);
  191.  
  192.     id = get_struc_id("KInitialPageAllocator_vt");
  193.     mid = add_struc_member(id,"Allocate",   0,  0x35500400, 0XFFFFFFFFFFFFFFFF, 8,  0XFFFFFFFFFFFFFFFF, 0,  0x000009);
  194.     mid = add_struc_member(id,"Free",   0X8,    0x35500400, 0XFFFFFFFFFFFFFFFF, 8,  0XFFFFFFFFFFFFFFFF, 0,  0x000009);
  195.     set_struc_align(id,3);
  196.  
  197.     id = get_struc_id("KInitialPageTable");
  198.     mid = add_struc_member(id,"l1_table",   0,  0x35500400, 0XFFFFFFFFFFFFFFFF, 8,  0XFFFFFFFFFFFFFFFF, 0,  0x000009);
  199.     mid = add_struc_member(id,"num_l1_entries", 0X8,    0x20000400, -1, 4);
  200.     set_struc_align(id,3);
  201.     return id;
  202. }
  203.  
  204. //------------------------------------------------------------------------
  205. // Information about structure types
  206.  
  207. static Structures(void) {
  208.         auto id;
  209.         begin_type_updating(UTP_STRUCT);
  210.     id = Structures_0(id);
  211.     patch_byte  (0X80316944,    0X1F);
  212.     patch_byte  (0X80316945,    0X20);
  213.     patch_byte  (0X80316946,    0X3);
  214.     patch_byte  (0X80316947,    0XD5);
  215.     patch_byte  (0X803169A4,    0X1F);
  216.     patch_byte  (0X803169A5,    0X20);
  217.     patch_byte  (0X803169A6,    0X3);
  218.     patch_byte  (0X803169A7,    0XD5);
  219.     patch_byte  (0X803169F8,    0X1F);
  220.     patch_byte  (0X803169F9,    0X20);
  221.     patch_byte  (0X803169FA,    0X3);
  222.     patch_byte  (0X803169FB,    0XD5);
  223.     patch_byte  (0X80316A34,    0X1F);
  224.     patch_byte  (0X80316A35,    0X20);
  225.     patch_byte  (0X80316A36,    0X3);
  226.     patch_byte  (0X80316A37,    0XD5);
  227. }
  228.  
  229. //------------------------------------------------------------------------
  230. // Information about bytes
  231.  
  232. static Bytes_0(void) {
  233.         auto x;
  234. #define id x
  235.  
  236.     create_insn (x=0X80315000);
  237.     op_plain_offset (x, 1,  0);
  238.     op_plain_offset (x, 129,    0);
  239.     set_name    (0X80315000,    "kernelldr_main");
  240.     create_insn (x=0X80315004);
  241.     op_plain_offset (x, 1,  0);
  242.     op_plain_offset (x, 129,    0);
  243.     create_insn (x=0X8031500C);
  244.     op_plain_offset (x, 1,  0);
  245.     op_plain_offset (x, 129,    0);
  246.     create_insn (x=0X8031502C);
  247.     op_plain_offset (x, 1,  0);
  248.     op_plain_offset (x, 129,    0);
  249.     create_insn (x=0X80315034);
  250.     op_plain_offset (x, 1,  0);
  251.     op_plain_offset (x, 129,    0);
  252.     create_insn (x=0X80315040);
  253.     op_stkvar   (x, 1);
  254.     create_insn (x=0X80315044);
  255.     op_stkvar   (x, 1);
  256.     set_cmt (0X80315048,    "base_address", 0);
  257.     create_insn (x=0X80315048);
  258.     op_plain_offset (x, 1,  0);
  259.     op_plain_offset (x, 129,    0);
  260.     create_insn (x=0X8031504C);
  261.     op_plain_offset (x, 1,  0);
  262.     op_plain_offset (x, 129,    0);
  263.     set_cmt (0X80315054,    "dynamic",  0);
  264.     create_insn (x=0X80315064);
  265.     op_plain_offset (x, 1,  0);
  266.     op_plain_offset (x, 129,    0);
  267.     create_insn (x=0X80315070);
  268.     op_stkvar   (x, 1);
  269.     set_cmt (0X80315074,    "ini1_base_address",    0);
  270.     create_insn (x=0X80315074);
  271.     op_stkvar   (x, 1);
  272.     create_insn (x=0X8031507C);
  273.     op_stkvar   (x, 1);
  274.     create_insn (x=0X80315084);
  275.     op_stkvar   (x, 1);
  276.     create_insn (x=0X80315088);
  277.     op_stkvar   (x, 1);
  278.     create_insn (0X80315094);
  279.     set_name    (0X80315094,    "kernelldr_save_tpidr_registers");
  280.     create_insn (0X803150C0);
  281.     set_name    (0X803150C0,    "kernelldr_verify_tpidr_el1");
  282.     create_insn (0X803150D4);
  283.     create_insn (0X80315800);
  284.     set_name    (0X80315800,    "synch_sp0_exception");
  285.     create_insn (0X80315804);
  286.     create_insn (0X80315880);
  287.     set_name    (0X80315880,    "irq_sp0_exception");
  288.     create_insn (0X80315884);
  289.     create_insn (0X80315900);
  290.     set_name    (0X80315900,    "fiq_sp0_exception");
  291.     create_insn (0X80315904);
  292.     create_insn (x=0X80315980);
  293.     op_plain_offset (x, 0,  0);
  294.     op_plain_offset (x, 128,    0);
  295.     set_name    (0X80315980,    "serror_sp0_exception");
  296.     create_insn (0X80315984);
  297.     create_insn (0X80315A00);
  298.     set_name    (0X80315A00,    "synch_spx_exception");
  299.     create_insn (0X80315A04);
  300.     create_insn (0X80315A80);
  301.     set_name    (0X80315A80,    "irq_spx_exception");
  302.     create_insn (0X80315A84);
  303.     create_insn (0X80315B00);
  304.     set_name    (0X80315B00,    "fiq_spx_exception");
  305.     create_insn (0X80315B04);
  306.     create_insn (0X80315B80);
  307.     set_name    (0X80315B80,    "serror_spx_exception");
  308.     create_insn (0X80315B84);
  309.     create_insn (0X80315C00);
  310.     set_name    (0X80315C00,    "synch_a64_exception");
  311.     create_insn (0X80315C04);
  312.     create_insn (0X80315C80);
  313.     set_name    (0X80315C80,    "irq_a64_exception");
  314.     create_insn (0X80315C84);
  315.     create_insn (0X80315D00);
  316.     set_name    (0X80315D00,    "fiq_a64_exception");
  317.     create_insn (0X80315D04);
  318.     create_insn (0X80315D80);
  319.     set_name    (0X80315D80,    "serror_a64_exception");
  320.     create_insn (0X80315D84);
  321.     create_insn (0X80315E00);
  322.     set_name    (0X80315E00,    "synch_a32_exception");
  323.     create_insn (0X80315E04);
  324.     create_insn (0X80315E80);
  325.     set_name    (0X80315E80,    "irq_a32_exception");
  326.     create_insn (0X80315E84);
  327.     create_insn (0X80315F00);
  328.     set_name    (0X80315F00,    "fiq_a32_exception");
  329.     create_insn (0X80315F04);
  330.     create_insn (0X80315F80);
  331.     set_name    (0X80315F80,    "serror_a32_exception");
  332.     create_insn (0X80315F84);
  333.     set_name    (0X80315F84,    "synch_spx_exception_impl");
  334.     create_dword    (0X80315FB4);
  335.     create_qword    (0X80315FB8);
  336.     create_qword    (0X80315FC0);
  337.     create_qword    (0X80315FC8);
  338.     create_qword    (0X80315FD0);
  339.     create_insn (x=0X80315FD8);
  340.     op_stkvar   (x, 1);
  341.     set_name    (0X80315FD8,    "kernelldr_relocate_kernel_physically");
  342.     create_insn (x=0X80315FDC);
  343.     op_stkvar   (x, 1);
  344.     create_insn (x=0X80315FE0);
  345.     op_stkvar   (x, 1);
  346.     set_cmt (0X80315FEC,    "b",    0);
  347.     create_insn (x=0X80316028);
  348.     op_stkvar   (x, 1);
  349.     create_insn (x=0X8031602C);
  350.     op_stkvar   (x, 1);
  351.     create_insn (x=0X80316030);
  352.     op_stkvar   (x, 1);
  353.     create_insn (0X80316038);
  354.     set_name    (0X80316038,    "kernelldr_map_initial_identity_mapping");
  355.     create_insn (x=0X8031603C);
  356.     op_stkvar   (x, 1);
  357.     create_insn (x=0X80316040);
  358.     op_stkvar   (x, 1);
  359.     create_insn (x=0X80316044);
  360.     op_stkvar   (x, 1);
  361.     create_insn (x=0X80316048);
  362.     op_stkvar   (x, 1);
  363.     create_insn (x=0X8031604C);
  364.     op_stkvar   (x, 1);
  365.     create_insn (x=0X80316084);
  366.     op_stkvar   (x, 1);
  367.     set_cmt (0X80316094,    "this", 0);
  368.     create_insn (x=0X80316094);
  369.     op_stkvar   (x, 1);
  370.     set_cmt (0X8031609C,    "attribute",    0);
  371.     create_insn (x=0X803160A0);
  372.     op_stkvar   (x, 1);
  373.     set_cmt (0X803160A4,    "address",  0);
  374.     set_cmt (0X803160A8,    "size", 0);
  375.     create_insn (x=0X803160AC);
  376.     op_stkvar   (x, 1);
  377.     set_cmt (0X803160B0,    "phys_address", 0);
  378.     set_cmt (0X803160B4,    "allocator",    0);
  379.     create_insn (x=0X803160BC);
  380.     op_stkvar   (x, 1);
  381.     create_insn (x=0X803160C0);
  382.     op_plain_offset (x, 1,  0);
  383.     op_plain_offset (x, 129,    0);
  384.     create_insn (x=0X803160C4);
  385.     op_plain_offset (x, 1,  0);
  386.     op_plain_offset (x, 129,    0);
  387.     create_insn (x=0X803160C8);
  388.     op_hex      (x, 1);
  389.     create_insn (x=0X803160CC);
  390.     op_plain_offset (x, 1,  0);
  391.     op_plain_offset (x, 129,    0);
  392.     create_insn (x=0X803160D0);
  393.     op_plain_offset (x, 1,  0);
  394.     op_plain_offset (x, 129,    0);
  395.     create_insn (x=0X803160D8);
  396.     op_hex      (x, 1);
  397.     set_cmt (0X803160DC,    "size", 0);
  398.     set_cmt (0X803160E0,    "this", 0);
  399.     create_insn (x=0X803160E0);
  400.     op_stkvar   (x, 1);
  401.     set_cmt (0X803160E4,    "attribute",    0);
  402.     set_cmt (0X803160E8,    "phys_address", 0);
  403.     set_cmt (0X803160EC,    "allocator",    0);
  404.     set_cmt (0X803160FC,    "this", 0);
  405.     create_insn (x=0X803160FC);
  406.     op_stkvar   (x, 1);
  407.     set_cmt (0X80316100,    "attribute",    0);
  408.     set_cmt (0X80316104,    "address",  0);
  409.     create_insn (x=0X80316108);
  410.     op_stkvar   (x, 1);
  411.     set_cmt (0X8031610C,    "size", 0);
  412.     set_cmt (0X80316110,    "phys_address", 0);
  413.     set_cmt (0X80316114,    "allocator",    0);
  414.     create_insn (x=0X8031611C);
  415.     op_stkvar   (x, 1);
  416.     set_cmt (0X80316148,    "a1",   0);
  417.     create_insn (x=0X80316150);
  418.     op_hex      (x, 1);
  419.     create_insn (x=0X80316170);
  420.     op_hex      (x, 1);
  421.     create_insn (0X803161CC);
  422.     create_insn (x=0X80316254);
  423.     op_hex      (x, 1);
  424.     create_insn (x=0X803162B0);
  425.     op_hex      (x, 1);
  426.     create_insn (x=0X803162D8);
  427.     op_hex      (x, 1);
  428.     create_insn (x=0X8031635C);
  429.     op_hex      (x, 1);
  430.     create_insn (x=0X803163E0);
  431.     op_stkvar   (x, 1);
  432.     create_insn (x=0X803163E4);
  433.     op_stkvar   (x, 1);
  434.     create_insn (x=0X803163E8);
  435.     op_stkvar   (x, 1);
  436.     create_insn (x=0X803163EC);
  437.     op_stkvar   (x, 1);
  438.     create_insn (x=0X803163F0);
  439.     op_stkvar   (x, 1);
  440.     create_insn (0X803163FC);
  441.     set_name    (0X803163FC,    "KInitialPageTable::Map");
  442.     create_insn (x=0X80316400);
  443.     op_stkvar   (x, 1);
  444.     create_insn (x=0X80316404);
  445.     op_stkvar   (x, 1);
  446.     create_insn (x=0X80316408);
  447.     op_stkvar   (x, 1);
  448.     create_insn (x=0X8031640C);
  449.     op_stkvar   (x, 1);
  450.     create_insn (x=0X80316410);
  451.     op_stkvar   (x, 1);
  452.     create_insn (x=0X80316414);
  453.     op_stkvar   (x, 1);
  454.     create_insn (x=0X80316430);
  455.     op_hex      (x, 1);
  456.     create_insn (0X8031643C);
  457.     create_insn (x=0X8031645C);
  458.     op_hex      (x, 1);
  459.     create_insn (x=0X80316460);
  460.     op_stkvar   (x, 1);
  461.     create_insn (x=0X80316470);
  462.     op_hex      (x, 1);
  463.     create_insn (x=0X8031648C);
  464.     op_hex      (x, 1);
  465.     create_insn (x=0X803164B4);
  466.     op_stkvar   (x, 1);
  467.     create_insn (x=0X803164D8);
  468.     op_hex      (x, 1);
  469.     create_insn (x=0X803164E4);
  470.     op_hex      (x, 1);
  471.     create_insn (x=0X803164EC);
  472.     op_hex      (x, 1);
  473.     create_insn (x=0X803164FC);
  474.     op_hex      (x, 1);
  475.     create_insn (x=0X80316524);
  476.     op_stkvar   (x, 1);
  477.     create_insn (x=0X80316544);
  478.     op_hex      (x, 1);
  479.     create_insn (x=0X80316550);
  480.     op_hex      (x, 1);
  481.     create_insn (x=0X80316564);
  482.     op_hex      (x, 1);
  483.     create_insn (0X80316580);
  484.     create_insn (x=0X80316588);
  485.     op_hex      (x, 1);
  486.     create_insn (x=0X80316598);
  487.     op_hex      (x, 1);
  488.     create_insn (0X803165C0);
  489.     create_insn (x=0X803165C8);
  490.     op_hex      (x, 1);
  491.     create_insn (0X80316744);
  492.     create_insn (x=0X8031674C);
  493.     op_hex      (x, 1);
  494.     create_insn (x=0X80316760);
  495.     op_hex      (x, 1);
  496.     create_insn (0X8031677C);
  497.     create_insn (x=0X80316784);
  498.     op_hex      (x, 1);
  499.     create_insn (x=0X803168E0);
  500.     op_stkvar   (x, 1);
  501.     create_insn (x=0X803168E4);
  502.     op_stkvar   (x, 1);
  503.     create_insn (x=0X803168E8);
  504.     op_stkvar   (x, 1);
  505.     create_insn (x=0X803168EC);
  506.     op_stkvar   (x, 1);
  507.     create_insn (x=0X803168F0);
  508.     op_stkvar   (x, 1);
  509.     create_insn (x=0X803168F4);
  510.     op_stkvar   (x, 1);
  511.     create_insn (x=0X80316900);
  512.     op_stkvar   (x, 1);
  513.     set_name    (0X80316900,    "kernelldr_generate_random_range");
  514.     create_insn (x=0X80316904);
  515.     op_stkvar   (x, 1);
  516.     create_insn (x=0X80316960);
  517.     op_stkvar   (x, 1);
  518.     create_insn (x=0X80316964);
  519.     op_stkvar   (x, 1);
  520.     create_insn (x=0X8031696C);
  521.     op_stkvar   (x, 1);
  522.     set_name    (0X8031696C,    "kernelldr_should_reserve_additional_kernel_data");
  523.     create_insn (x=0X803169AC);
  524.     op_stkvar   (x, 1);
  525.     create_insn (x=0X803169B4);
  526.     op_stkvar   (x, 1);
  527.     set_name    (0X803169B4,    "kernelldr_get_adjusted_kernel_physical_base");
  528.     create_insn (x=0X803169B8);
  529.     op_stkvar   (x, 1);
  530.     create_insn (x=0X80316A70);
  531.     op_stkvar   (x, 1);
  532.     create_insn (x=0X80316A74);
  533.     op_stkvar   (x, 1);
  534.     create_insn (x=0X80316A7C);
  535.     op_stkvar   (x, 1);
  536.     set_name    (0X80316A7C,    "kernelldr_libc_init_array");
  537.     create_insn (x=0X80316A80);
  538.     op_stkvar   (x, 1);
  539.     create_insn (x=0X80316A88);
  540.     op_plain_offset (x, 1,  0);
  541.     op_plain_offset (x, 129,    0);
  542.     create_insn (x=0X80316A8C);
  543.     op_plain_offset (x, 1,  0);
  544.     op_plain_offset (x, 129,    0);
  545.     create_insn (x=0X80316A90);
  546.     op_plain_offset (x, 1,  0);
  547.     op_plain_offset (x, 129,    0);
  548.     create_insn (x=0X80316A94);
  549.     op_plain_offset (x, 1,  0);
  550.     op_plain_offset (x, 129,    0);
  551.     create_insn (x=0X80316AA0);
  552.     op_plain_offset (x, 1,  0);
  553.     op_plain_offset (x, 129,    0);
  554.     create_insn (x=0X80316AA4);
  555.     op_plain_offset (x, 1,  0);
  556.     op_plain_offset (x, 129,    0);
  557.     create_insn (x=0X80316AB8);
  558.     op_stkvar   (x, 1);
  559.     create_insn (x=0X80316ABC);
  560.     op_stkvar   (x, 1);
  561.     create_insn (0X80316AC4);
  562.     set_name    (0X80316AC4,    "kernelldr_load_kernel");
  563.     create_insn (x=0X80316AC8);
  564.     op_stkvar   (x, 1);
  565.     create_insn (x=0X80316ACC);
  566.     op_stkvar   (x, 1);
  567.     create_insn (x=0X80316AD0);
  568.     op_stkvar   (x, 1);
  569.     create_insn (x=0X80316AD4);
  570.     op_stkvar   (x, 1);
  571.     create_insn (x=0X80316AD8);
  572.     op_stkvar   (x, 1);
  573.     create_insn (x=0X80316ADC);
  574.     op_stkvar   (x, 1);
  575.     create_insn (x=0X80316AE8);
  576.     op_stkvar   (x, 1);
  577.     create_insn (x=0X80316AEC);
  578.     op_stkvar   (x, 1);
  579.     set_cmt (0X80316AF0,    "p_kernel_base",    0);
  580.     create_insn (x=0X80316AF0);
  581.     op_stkvar   (x, 1);
  582.     set_cmt (0X80316AF4,    "p_kernel_map", 0);
  583.     create_insn (x=0X80316AF4);
  584.     op_stkvar   (x, 1);
  585.     create_insn (x=0X80316AF8);
  586.     op_stkvar   (x, 1);
  587.     create_insn (x=0X80316B00);
  588.     op_stkvar   (x, 1);
  589.     create_insn (x=0X80316B04);
  590.     op_hex      (x, 1);
  591.     create_insn (x=0X80316B10);
  592.     op_stkvar   (x, 1);
  593.     create_insn (x=0X80316B18);
  594.     op_hex      (x, 1);
  595.     create_insn (0X80316B24);
  596.     create_insn (x=0X80316B28);
  597.     op_hex      (x, 1);
  598.     create_insn (0X80316B34);
  599.     create_insn (x=0X80316B38);
  600.     op_hex      (x, 1);
  601.     create_insn (0X80316B44);
  602.     create_insn (x=0X80316B48);
  603.     op_hex      (x, 1);
  604.     create_insn (0X80316B54);
  605.     create_insn (x=0X80316B58);
  606.     op_hex      (x, 1);
  607.     create_insn (0X80316B64);
  608.     create_insn (x=0X80316B68);
  609.     op_hex      (x, 1);
  610.     create_insn (0X80316B74);
  611.     create_insn (x=0X80316B78);
  612.     op_stkvar   (x, 1);
  613.     create_insn (x=0X80316B80);
  614.     op_stkvar   (x, 1);
  615.     create_insn (x=0X80316B88);
  616.     op_stkvar   (x, 1);
  617.     create_insn (x=0X80316B9C);
  618.     op_hex      (x, 1);
  619.     create_insn (x=0X80316BA0);
  620.     op_stkvar   (x, 1);
  621.     create_insn (0X80316BEC);
  622.     create_insn (x=0X80316BF0);
  623.     op_plain_offset (x, 1,  0);
  624.     op_plain_offset (x, 129,    0);
  625.     create_insn (x=0X80316BF4);
  626.     create_insn (x=0X80316BFC);
  627.     op_plain_offset (x, 1,  0X80317E80);
  628.     op_plain_offset (x, 129,    0X80317E80);
  629.     create_insn (x=0X80316C14);
  630.     op_stkvar   (x, 1);
  631.     set_cmt (0X80316C20,    "ttbr1_page_table", 0);
  632.     create_insn (x=0X80316C20);
  633.     op_stkvar   (x, 1);
  634.     set_cmt (0X80316C24,    "kernel_base",  0);
  635.     set_cmt (0X80316C28,    "kernel_size",  0);
  636.     set_cmt (0X80316C2C,    "page_tables_base", 0);
  637.     create_insn (x=0X80316C30);
  638.     op_stkvar   (x, 1);
  639.     set_cmt (0X80316C34,    "page_tables_size", 0);
  640.     set_cmt (0X80316C38,    "allocator",    0);
  641.     create_insn (x=0X80316C40);
  642.     op_hex      (x, 1);
  643.     create_insn (x=0X80316C50);
  644.     op_hex      (x, 1);
  645.     set_cmt (0X80316C54,    "_QWORD",   0);
  646.     set_cmt (0X80316C58,    "_QWORD",   0);
  647.     create_insn (x=0X80316C60);
  648.     op_hex      (x, 1);
  649.     create_insn (x=0X80316C7C);
  650.     op_stkvar   (x, 1);
  651.     create_insn (x=0X80316C80);
  652.     op_stkvar   (x, 1);
  653.     create_insn (x=0X80316CA0);
  654.     op_hex      (x, 1);
  655.     create_insn (x=0X80316CC0);
  656.     op_hex      (x, 1);
  657.     create_insn (x=0X80316CD0);
  658.     op_hex      (x, 1);
  659.     create_insn (x=0X80316CF0);
  660.     op_hex      (x, 1);
  661.     create_insn (x=0X80316D08);
  662.     op_hex      (x, 1);
  663.     set_cmt (0X80316D24,    "size", 0);
  664.     set_cmt (0X80316D30,    "phys_address", 0);
  665.     create_insn (x=0X80316D34);
  666.     op_plain_offset (x, 1,  0);
  667.     op_plain_offset (x, 129,    0);
  668.     create_insn (x=0X80316D38);
  669.     create_insn (x=0X80316D40);
  670.     op_stkvar   (x, 1);
  671.     set_cmt (0X80316D44,    "this", 0);
  672.     create_insn (x=0X80316D44);
  673.     op_stkvar   (x, 1);
  674.     set_cmt (0X80316D48,    "attribute",    0);
  675.     create_insn (x=0X80316D48);
  676.     op_stkvar   (x, 1);
  677.     set_cmt (0X80316D4C,    "address",  0);
  678.     set_cmt (0X80316D50,    "allocator",    0);
  679.     set_cmt (0X80316D60,    "phys_address", 0);
  680.     create_insn (x=0X80316D6C);
  681.     op_stkvar   (x, 1);
  682.     set_cmt (0X80316D70,    "this", 0);
  683.     create_insn (x=0X80316D70);
  684.     op_stkvar   (x, 1);
  685.     set_cmt (0X80316D74,    "attribute",    0);
  686.     create_insn (x=0X80316D74);
  687.     op_stkvar   (x, 1);
  688.     set_cmt (0X80316D78,    "address",  0);
  689.     set_cmt (0X80316D7C,    "size", 0);
  690.     set_cmt (0X80316D80,    "allocator",    0);
  691.     set_cmt (0X80316D88,    "address",  0);
  692.     set_cmt (0X80316D8C,    "size", 0);
  693.     set_cmt (0X80316D90,    "phys_address", 0);
  694.     set_cmt (0X80316D94,    "this", 0);
  695.     create_insn (x=0X80316D94);
  696.     op_stkvar   (x, 1);
  697.     set_cmt (0X80316D98,    "attribute",    0);
  698.     create_insn (x=0X80316D98);
  699.     op_stkvar   (x, 1);
  700.     create_insn (x=0X80316D9C);
  701.     op_stkvar   (x, 1);
  702.     set_cmt (0X80316DA0,    "allocator",    0);
  703.     create_insn (x=0X80316DA8);
  704.     op_stkvar   (x, 1);
  705.     create_insn (x=0X80316DBC);
  706.     op_stkvar   (x, 1);
  707.     set_cmt (0X80316DC0,    "dynamic",  0);
  708.     set_cmt (0X80316DC4,    "base_address", 0);
  709.     set_cmt (0X80316DCC,    "this", 0);
  710.     create_insn (x=0X80316DCC);
  711.     op_stkvar   (x, 1);
  712.     set_cmt (0X80316DD0,    "address",  0);
  713.     set_cmt (0X80316DD4,    "size", 0);
  714.     create_insn (x=0X80316DDC);
  715.     op_stkvar   (x, 1);
  716.     create_insn (x=0X80316DE4);
  717.     op_stkvar   (x, 1);
  718.     create_insn (x=0X80316E08);
  719.     op_stkvar   (x, 1);
  720.     create_insn (x=0X80316E0C);
  721.     op_stkvar   (x, 1);
  722.     create_insn (x=0X80316E10);
  723.     op_stkvar   (x, 1);
  724.     create_insn (x=0X80316E14);
  725.     op_stkvar   (x, 1);
  726.     create_insn (x=0X80316E18);
  727.     op_stkvar   (x, 1);
  728.     create_insn (x=0X80316E1C);
  729.     op_stkvar   (x, 1);
  730.     create_insn (x=0X80316E28);
  731.     op_stkvar   (x, 1);
  732.     set_name    (0X80316E28,    "KInitialPageTable::ReprotectToReadOnly");
  733.     create_insn (x=0X80316E2C);
  734.     op_stkvar   (x, 1);
  735.     create_insn (x=0X80316E30);
  736.     op_stkvar   (x, 1);
  737.     create_insn (x=0X80316E34);
  738.     op_stkvar   (x, 1);
  739.     create_insn (x=0X80316E38);
  740.     op_stkvar   (x, 1);
  741.     create_insn (x=0X80316E3C);
  742.     op_stkvar   (x, 1);
  743.     create_insn (x=0X80316E48);
  744.     op_hex      (x, 1);
  745.     create_insn (0X80316E54);
  746.     create_insn (x=0X80316E9C);
  747.     op_hex      (x, 1);
  748.     create_insn (x=0X80316EB0);
  749.     op_hex      (x, 1);
  750.     create_insn (x=0X80316ECC);
  751.     op_hex      (x, 1);
  752.     create_insn (x=0X80316EDC);
  753.     op_hex      (x, 1);
  754.     create_insn (x=0X80316EE4);
  755.     op_hex      (x, 1);
  756.     create_insn (0X80317100);
  757.     create_insn (x=0X80317108);
  758.     op_hex      (x, 1);
  759.     create_insn (x=0X80317110);
  760.     op_hex      (x, 1);
  761.     create_insn (x=0X80317158);
  762.     op_hex      (x, 1);
  763.     create_insn (x=0X8031716C);
  764.     op_hex      (x, 1);
  765.     create_insn (x=0X80317184);
  766.     op_hex      (x, 1);
  767.     create_insn (x=0X80317194);
  768.     op_hex      (x, 1);
  769.     create_insn (x=0X8031719C);
  770.     op_hex      (x, 1);
  771.     create_insn (0X803173B8);
  772.     create_insn (x=0X803173C0);
  773.     op_hex      (x, 1);
  774.     create_insn (x=0X803173C8);
  775.     op_hex      (x, 1);
  776.     create_insn (0X80317404);
  777.     create_insn (x=0X80317408);
  778.     op_hex      (x, 1);
  779.     create_insn (x=0X80317410);
  780.     op_hex      (x, 1);
  781.     create_insn (x=0X80317454);
  782.     op_stkvar   (x, 1);
  783.     create_insn (x=0X80317458);
  784.     op_stkvar   (x, 1);
  785.     create_insn (x=0X8031745C);
  786.     op_stkvar   (x, 1);
  787.     create_insn (x=0X80317460);
  788.     op_stkvar   (x, 1);
  789.     create_insn (x=0X80317464);
  790.     op_stkvar   (x, 1);
  791.     create_insn (x=0X80317468);
  792.     op_stkvar   (x, 1);
  793.     create_insn (0X80317470);
  794.     create_insn (0X80317474);
  795.     create_insn (0X80317478);
  796.     create_insn (0X8031747C);
  797.     create_insn (0X80317480);
  798.     create_insn (0X80317484);
  799.     create_insn (0X80317488);
  800.     create_insn (0X8031748C);
  801.     create_insn (0X80317490);
  802.     create_insn (0X80317494);
  803.     create_insn (0X80317498);
  804.     create_insn (0X8031749C);
  805.     create_insn (x=0X803174A0);
  806.     op_plain_offset (x, 1,  0);
  807.     op_plain_offset (x, 129,    0);
  808.     set_name    (0X803174A0,    "kernelldr_finalize_initial_page_allocator");
  809.     create_insn (x=0X803174A4);
  810.     op_plain_offset (x, 1,  0);
  811.     op_plain_offset (x, 129,    0);
  812.     create_insn (x=0X803174A8);
  813.     op_plain_offset (x, 1,  0);
  814.     op_plain_offset (x, 129,    0);
  815.     create_insn (x=0X803174B0);
  816.     op_stkvar   (x, 1);
  817.     set_name    (0X803174B0,    "KInitialPageAllocator::Allocate");
  818.     create_insn (x=0X803174B4);
  819.     op_stkvar   (x, 1);
  820.     create_insn (x=0X803174DC);
  821.     op_stkvar   (x, 1);
  822.     create_insn (x=0X803174E4);
  823.     op_stkvar   (x, 1);
  824.     create_insn (0X803174EC);
  825.     create_insn (0X803174F0);
  826.     set_name    (0X803174F0,    "KInitialPageAllocator::Free");
  827.     create_insn (0X803174F4);
  828.     set_name    (0X803174F4,    "kernelldr_apply_relocations");
  829.     create_insn (x=0X80317520);
  830.     op_plain_offset (x, 1,  0);
  831.     op_plain_offset (x, 129,    0);
  832.     create_insn (x=0X80317524);
  833.     set_cmt (0X80317538,    "jumptable 0000000080317554 cases 1-6,8,10-16,18",  1);
  834.     create_insn (0X80317538);
  835.     create_insn (x=0X80317548);
  836.     op_plain_offset (x, 1,  0);
  837.     op_plain_offset (x, 129,    0);
  838.     set_cmt (0X80317554,    "switch 20 cases ", 0);
  839.     set_cmt (0X80317558,    "jumptable 0000000080317554 case 7",    1);
  840.     create_insn (0X80317558);
  841.     set_cmt (0X8031756C,    "jumptable 0000000080317554 default case",  1);
  842.     set_cmt (0X80317590,    "jumptable 0000000080317554 case 9",    1);
  843.     create_insn (0X80317590);
  844.     set_cmt (0X803175A4,    "jumptable 0000000080317554 case 17",   1);
  845.     create_insn (0X803175A4);
  846.     set_cmt (0X803175BC,    "jumptable 0000000080317554 case 19",   1);
  847.     create_insn (0X803175BC);
  848.     create_insn (0X803175D0);
  849.     set_cmt (0X803175D8,    "jumptable 0000000080317554 case 0",    1);
  850.     create_insn (0X803175D8);
  851.     create_insn (0X80317644);
  852.     create_insn (0X80317648);
  853.     make_array  (0X8031764C,    0X4);
  854.     create_insn (x=0X80317650);
  855.     op_stkvar   (x, 1);
  856.     set_name    (0X80317650,    "memmove");
  857.     create_insn (x=0X80317654);
  858.     op_stkvar   (x, 1);
  859.     create_insn (x=0X80317684);
  860.     op_hex      (x, 1);
  861.     create_insn (0X803176B0);
  862.     create_insn (x=0X803176B8);
  863.     op_stkvar   (x, 1);
  864.     create_insn (x=0X803176C0);
  865.     op_stkvar   (x, 1);
  866.     create_insn (0X803176C8);
  867.     create_insn (x=0X803176EC);
  868.     op_stkvar   (x, 1);
  869.     create_insn (x=0X803176F4);
  870.     op_stkvar   (x, 1);
  871.     create_insn (x=0X803176FC);
  872.     op_hex      (x, 1);
  873.     create_insn (x=0X80317714);
  874.     op_hex      (x, 1);
  875.     create_insn (x=0X8031773C);
  876.     op_hex      (x, 1);
  877.     create_insn (x=0X80317748);
  878.     op_hex      (x, 1);
  879.     create_insn (x=0X8031776C);
  880.     op_hex      (x, 1);
  881.     create_insn (0X8031777C);
  882.     create_insn (0X803177AC);
  883.     create_insn (0X803177B8);
  884.     set_name    (0X803177B8,    "memset");
  885.     create_insn (x=0X803177FC);
  886.     op_hex      (x, 1);
  887.     create_insn (x=0X80317804);
  888.     op_hex      (x, 1);
  889.     create_insn (x=0X80317814);
  890.     op_hex      (x, 1);
  891.     create_insn (x=0X8031783C);
  892.     op_hex      (x, 1);
  893.     create_insn (x=0X80317844);
  894.     op_hex      (x, 1);
  895.     create_insn (0X80317888);
  896.     set_name    (0X80317888,    "memcpy");
  897.     create_insn (x=0X8031788C);
  898.     op_hex      (x, 1);
  899.     create_insn (x=0X803178A8);
  900.     op_hex      (x, 1);
  901.     create_insn (x=0X803178B0);
  902.     op_hex      (x, 1);
  903.     create_insn (x=0X803178F4);
  904.     op_hex      (x, 1);
  905.     create_insn (0X80317968);
  906.     create_insn (x=0X8031796C);
  907.     op_hex      (x, 1);
  908.     create_insn (0X803179B4);
  909.     create_insn (0X803179F8);
  910.     create_insn (x=0X80317A04);
  911.     op_hex      (x, 1);
  912.     create_insn (0X80317B7C);
  913.     create_insn (x=0X80317B94);
  914.     op_hex      (x, 1);
  915.     make_array  (0X80317BEC,    0X4);
  916.     set_cmt (0X80317D19,    "jump table for switch statement",  0);
  917.     create_byte (0X80317D19);
  918.     make_array  (0X80317D19,    0X14);
  919.     create_qword    (x=0X80317E60);
  920.     op_plain_offset (x, 0,  0);
  921.     op_plain_offset (x, 128,    0);
  922.     create_qword    (x=0X80317E68);
  923.     op_plain_offset (x, 0,  0);
  924.     op_plain_offset (x, 128,    0);
  925.     create_qword    (x=0X80317E70);
  926.     op_plain_offset (x, 0,  0);
  927.     op_plain_offset (x, 128,    0);
  928.     create_qword    (x=0X80317E78);
  929.     op_plain_offset (x, 0,  0);
  930.     op_plain_offset (x, 128,    0);
  931.     MakeStruct  (0X80317E80,    "KInitialPageAllocator");
  932.     set_name    (0X80317E80,    "g_InitialPageAllocator");
  933.     make_array  (0X80317E90,    0X10);
  934.     create_qword    (x=0X80317EA0);
  935.     op_plain_offset (x, 0,  0);
  936.     op_plain_offset (x, 128,    0);
  937.     set_name    (0X80317EA0,    "KInitialPageAllocator::vtable");
  938.     create_qword    (x=0X80317EA8);
  939.     op_plain_offset (x, 0,  0);
  940.     op_plain_offset (x, 128,    0);
  941.     create_qword    (0X80317EB0);
  942. }
  943.  
  944. static Functions_0(void) {
  945.  
  946.     add_func    (0X80315000,0X80315094);
  947.     set_func_flags(0X80315000,0x400);
  948.     SetType(0X80315000, "void __fastcall kernelldr_main(_QWORD kernel_base_address, KernelMap *kernel_map, _QWORD ini1_base_address);");
  949.     set_frame_size(0X80315000, 0X20, 0, 0);
  950.     define_local_var(0X80315000, 0X80315094, "[bp-0X10]", "ini1_base_address");
  951.     add_func    (0X80315094,0X803150C0);
  952.     set_func_flags(0X80315094,0x400);
  953.     SetType(0X80315094, "__int64 __fastcall kernelldr_save_tpidr_registers(_QWORD *a1);");
  954.     set_frame_size(0X80315094, 0, 0, 0);
  955.     add_func    (0X803150C0,0X803150D4);
  956.     set_func_flags(0X803150C0,0x400);
  957.     add_func    (0X80315800,0X80315804);
  958.     set_func_flags(0X80315800,0x401);
  959.     SetType(0X80315800, "void __fastcall synch_sp0_exception();");
  960.     add_func    (0X80315880,0X80315884);
  961.     set_func_flags(0X80315880,0x401);
  962.     add_func    (0X80315900,0X80315904);
  963.     set_func_flags(0X80315900,0x401);
  964.     add_func    (0X80315980,0X80315984);
  965.     set_func_flags(0X80315980,0x401);
  966.     add_func    (0X80315A00,0X80315A04);
  967.     set_func_flags(0X80315A00,0x480);
  968.     add_func    (0X80315A80,0X80315A84);
  969.     set_func_flags(0X80315A80,0x401);
  970.     add_func    (0X80315B00,0X80315B04);
  971.     set_func_flags(0X80315B00,0x401);
  972.     add_func    (0X80315B80,0X80315B84);
  973.     set_func_flags(0X80315B80,0x401);
  974.     add_func    (0X80315C00,0X80315C04);
  975.     set_func_flags(0X80315C00,0x401);
  976.     add_func    (0X80315C80,0X80315C84);
  977.     set_func_flags(0X80315C80,0x401);
  978.     add_func    (0X80315D00,0X80315D04);
  979.     set_func_flags(0X80315D00,0x401);
  980.     add_func    (0X80315D80,0X80315D84);
  981.     set_func_flags(0X80315D80,0x401);
  982.     add_func    (0X80315E00,0X80315E04);
  983.     set_func_flags(0X80315E00,0x401);
  984.     add_func    (0X80315E80,0X80315E84);
  985.     set_func_flags(0X80315E80,0x401);
  986.     add_func    (0X80315F00,0X80315F04);
  987.     set_func_flags(0X80315F00,0x401);
  988.     add_func    (0X80315F80,0X80315F84);
  989.     set_func_flags(0X80315F80,0x401);
  990.     add_func    (0X80315F84,0X80315FB4);
  991.     set_func_flags(0X80315F84,0x400);
  992.     add_func    (0X80315FD8,0X80316038);
  993.     set_func_flags(0X80315FD8,0x410);
  994.     SetType(0X80315FD8, "__int64 __fastcall kernelldr_relocate_kernel_physically(_QWORD *p_kernel_base, KernelMap **p_kernel_map);");
  995.     set_frame_size(0X80315FD8, 0X20, 16, 0);
  996.     add_func    (0X80316038,0X803163FC);
  997.     set_func_flags(0X80316038,0x410);
  998.     SetType(0X80316038, "void __cdecl kernelldr_map_initial_identity_mapping(KInitialPageTable *ttbr1_page_table, _QWORD kernel_base, _QWORD kernel_size, _QWORD page_tables_base, _QWORD page_tables_size, KInitialPageAllocator *allocator);");
  999.     set_frame_size(0X80316038, 0XC0, 16, 0);
  1000.     define_local_var(0X80316038, 0X803163FC, "[bp-0XC0]", "attr");
  1001.     define_local_var(0X80316038, 0X803163FC, "[bp-0X50]", "ttbr0_page_table");
  1002.     add_func    (0X803163FC,0X80316900);
  1003.     set_func_flags(0X803163FC,0x410);
  1004.     SetType(0X803163FC, "void __fastcall KInitialPageTable__Map(KInitialPageTable *this, _QWORD address, _QWORD size, _QWORD phys_address, const _QWORD *attribute, KInitialPageAllocator *allocator);");
  1005.     set_frame_size(0X803163FC, 0X60, 16, 0);
  1006.     add_func    (0X80316900,0X8031696C);
  1007.     set_func_flags(0X80316900,0x400);
  1008.     SetType(0X80316900, "_QWORD __cdecl kernelldr_generate_random_range(_QWORD, _QWORD);");
  1009.     set_frame_size(0X80316900, 0X20, 0, 0);
  1010.     add_func    (0X8031696C,0X803169B4);
  1011.     set_func_flags(0X8031696C,0x400);
  1012.     SetType(0X8031696C, "bool __fastcall kernelldr_should_reserve_additional_kernel_data();");
  1013.     set_frame_size(0X8031696C, 0X10, 0, 0);
  1014.     add_func    (0X803169B4,0X80316A7C);
  1015.     set_func_flags(0X803169B4,0x400);
  1016.     SetType(0X803169B4, "_QWORD __cdecl kernelldr_get_adjusted_kernel_physical_base(_QWORD b);");
  1017.     set_frame_size(0X803169B4, 0X20, 0, 0);
  1018.     add_func    (0X80316A7C,0X80316AC4);
  1019.     set_func_flags(0X80316A7C,0x410);
  1020.     SetType(0X80316A7C, "void __cdecl kernelldr_libc_init_array();");
  1021.     set_frame_size(0X80316A7C, 0X10, 16, 0);
  1022.     add_func    (0X80316AC4,0X80316E28);
  1023.     set_func_flags(0X80316AC4,0x410);
  1024.     SetType(0X80316AC4, "_QWORD __fastcall kernelldr_load_kernel(_QWORD kernel_base_address, KernelMap *kernel_map, _QWORD ini1_base_address);");
  1025.     set_frame_size(0X80316AC4, 0XA0, 16, 0);
  1026.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0XA0]", "bss_offset");
  1027.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X98]", "dynamic_end_offset");
  1028.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X90]", "init_array_end_offset");
  1029.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X88]", "init_array_offset");
  1030.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X80]", "ttbr1_page_table");
  1031.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X68]", "a2");
  1032.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X60]", "a1");
  1033.     define_local_var(0X80316AC4, 0X80316E28, "[bp-0X58]", "attribute");
  1034.     add_func    (0X80316E28,0X803174A0);
  1035.     set_func_flags(0X80316E28,0x400);
  1036.     SetType(0X80316E28, "void __cdecl KInitialPageTable__ReprotectToReadOnly(KInitialPageTable *this, _QWORD address, _QWORD size);");
  1037.     set_frame_size(0X80316E28, 0X60, 0, 0);
  1038.     add_func    (0X803174A0,0X803174B0);
  1039.     set_func_flags(0X803174A0,0x400);
  1040.     add_func    (0X803174B0,0X803174F0);
  1041.     set_func_flags(0X803174B0,0x410);
  1042.     SetType(0X803174B0, "__int64 __fastcall KInitialPageAllocator__Allocate(KInitialPageAllocator *this);");
  1043.     set_frame_size(0X803174B0, 0X10, 16, 0);
  1044.     add_func    (0X803174F0,0X803174F4);
  1045.     set_func_flags(0X803174F0,0x440);
  1046.     add_func    (0X803174F4,0X8031764C);
  1047.     set_func_flags(0X803174F4,0x400);
  1048.     SetType(0X803174F4, "__int64 __cdecl kernelldr_apply_relocations(_QWORD base_address, _DWORD *dynamic);");
  1049.     add_func    (0X80317650,0X803177B8);
  1050.     set_func_flags(0X80317650,0x410);
  1051.     set_frame_size(0X80317650, 0X10, 16, 0);
  1052.     add_func    (0X803177B8,0X80317888);
  1053.     set_func_flags(0X803177B8,0x400);
  1054.     add_func    (0X80317888,0X80317BEC);
  1055.     set_func_flags(0X80317888,0x400);
  1056. }
  1057.  
  1058. //------------------------------------------------------------------------
  1059. // Information about functions
  1060.  
  1061. static Functions(void) {
  1062.  
  1063.     Functions_0();
  1064. }
  1065.  
  1066. //------------------------------------------------------------------------
  1067. // Information about segment registers
  1068.  
  1069. static SegRegs(void) {
  1070.     split_sreg_range(0X80315000,"T",0,3);
  1071.     split_sreg_range(0X80317BEC,"T",0,3);
  1072.     split_sreg_range(0X80317BF0,"T",0,3);
  1073.     split_sreg_range(0X80317C98,"T",0,3);
  1074.     split_sreg_range(0X80317CD0,"T",0,3);
  1075.     split_sreg_range(0X80317D18,"T",0,3);
  1076.     split_sreg_range(0X80317D19,"T",0,3);
  1077.     split_sreg_range(0X80317D30,"T",0,3);
  1078.     split_sreg_range(0X80317E00,"T",0,3);
  1079.     split_sreg_range(0X80317E80,"T",0,3);
  1080.     split_sreg_range(0X80317EB0,"T",0,3);
  1081.     split_sreg_range(0X80319008,"T",0,3);
  1082.     split_sreg_range(0X80315000,"DS",0,3);
  1083.     split_sreg_range(0X80317BEC,"DS",0,3);
  1084.     split_sreg_range(0X80317BF0,"DS",0,3);
  1085.     split_sreg_range(0X80317C98,"DS",0,3);
  1086.     split_sreg_range(0X80317CD0,"DS",0,3);
  1087.     split_sreg_range(0X80317D18,"DS",0,3);
  1088.     split_sreg_range(0X80317D19,"DS",0,3);
  1089.     split_sreg_range(0X80317D30,"DS",0,3);
  1090.     split_sreg_range(0X80317E00,"DS",0,3);
  1091.     split_sreg_range(0X80317E80,"DS",0,3);
  1092.     split_sreg_range(0X80317EB0,"DS",0,3);
  1093.     split_sreg_range(0X80319008,"DS",0,3);
  1094. }
  1095.  
  1096. //------------------------------------------------------------------------
  1097. // Information about all patched bytes:
  1098.  
  1099. static Patches(void) {
  1100. }
  1101.  
  1102. //------------------------------------------------------------------------
  1103. // Call all byte feature functions:
  1104.  
  1105. static Bytes(void) {
  1106.     Bytes_0();
  1107.         end_type_updating(UTP_STRUCT);
  1108. }
  1109.  
  1110. // End of file.
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top