Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.76 KB | None | 0 0
  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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement