Advertisement
Marionumber1

isengard

Oct 6th, 2016
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 14.18 KB | None | 0 0
  1. /* Used to obfuscate each character
  2. .data:0804A060 srcbuf          dd 0                    ; DATA XREF: obfuscate+26r
  3. .data:0804A064                 dd 77073096h
  4. .data:0804A068                 dd 0EE0E612Ch
  5. .data:0804A06C                 dd 990951BAh
  6. .data:0804A070                 dd 76DC419h
  7. .data:0804A074                 dd 706AF48Fh
  8. .data:0804A078                 dd 0E963A535h
  9. .data:0804A07C                 dd 9E6495A3h
  10. .data:0804A080                 dd 0EDB8832h
  11. .data:0804A084                 dd 79DCB8A4h
  12. .data:0804A088                 dd 0E0D5E91Eh
  13. .data:0804A08C                 dd 97D2D988h
  14. .data:0804A090                 dd 9B64C2Bh
  15. .data:0804A094                 dd 7EB17CBDh
  16. .data:0804A098                 dd 0E7B82D07h
  17. .data:0804A09C                 dd 90BF1D91h
  18. .data:0804A0A0                 dd 1DB71064h
  19. .data:0804A0A4                 dd 6AB020F2h
  20. .data:0804A0A8                 dd 0F3B97148h
  21. .data:0804A0AC                 dd 84BE41DEh
  22. .data:0804A0B0                 dd 1ADAD47Dh
  23. .data:0804A0B4                 dd 6DDDE4EBh
  24. .data:0804A0B8                 dd 0F4D4B551h
  25. .data:0804A0BC                 dd 83D385C7h
  26. .data:0804A0C0                 dd 136C9856h
  27. .data:0804A0C4                 dd 646BA8C0h
  28. .data:0804A0C8                 dd 0FD62F97Ah
  29. .data:0804A0CC                 dd 8A65C9ECh
  30. .data:0804A0D0                 dd 14015C4Fh
  31. .data:0804A0D4                 dd 63066CD9h
  32. .data:0804A0D8                 dd 0FA0F3D63h
  33. .data:0804A0DC                 dd 8D080DF5h
  34. .data:0804A0E0                 dd 3B6E20C8h
  35. .data:0804A0E4                 dd 4C69105Eh
  36. .data:0804A0E8                 dd 0D56041E4h
  37. .data:0804A0EC                 dd 0A2677172h
  38. .data:0804A0F0                 dd 3C03E4D1h
  39. .data:0804A0F4                 dd 4B04D447h
  40. .data:0804A0F8                 dd 0D20D85FDh
  41. .data:0804A0FC                 dd 0A50AB56Bh
  42. .data:0804A100                 dd 35B5A8FAh
  43. .data:0804A104                 dd 42B2986Ch
  44. .data:0804A108                 dd 0DBBBC9D6h
  45. .data:0804A10C                 dd 0ACBCF940h
  46. .data:0804A110                 dd 32D86CE3h
  47. .data:0804A114                 dd 45DF5C75h
  48. .data:0804A118                 dd 0DCD60DCFh
  49. .data:0804A11C                 dd 0ABD13D59h
  50. .data:0804A120                 dd 26D930ACh
  51. .data:0804A124                 dd 51DE003Ah
  52. .data:0804A128                 dd 0C8D75180h
  53. .data:0804A12C                 dd 0BFD06116h
  54. .data:0804A130                 dd 21B4F4B5h
  55. .data:0804A134                 dd 56B3C423h
  56. .data:0804A138                 dd 0CFBA9599h
  57. .data:0804A13C                 dd 0B8BDA50Fh
  58. .data:0804A140                 dd 2802B89Eh
  59. .data:0804A144                 dd 5F058808h
  60. .data:0804A148                 dd 0C60CD9B2h
  61. .data:0804A14C                 dd 0B10BE924h
  62. .data:0804A150                 dd 2F6F7C87h
  63. .data:0804A154                 dd 58684C11h
  64. .data:0804A158                 dd 0C1611DABh
  65. .data:0804A15C                 dd 0B6662D3Dh
  66. .data:0804A160                 dd 76DC4190h
  67. .data:0804A164                 dd 1DB7106h
  68. .data:0804A168                 dd 98D220BCh
  69. .data:0804A16C                 dd 0EFD5102Ah
  70. .data:0804A170                 dd 71B18589h
  71. .data:0804A174                 dd 6B6B51Fh
  72. .data:0804A178                 dd 9FBFE4A5h
  73. .data:0804A17C                 dd 0E8B8D433h
  74. .data:0804A180                 dd 7807C9A2h
  75. .data:0804A184                 dd 0F00F934h
  76. .data:0804A188                 dd 9609A88Eh
  77. .data:0804A18C                 dd 0E10E9818h
  78. .data:0804A190                 dd 7F6A0DBBh
  79. .data:0804A194                 dd 86D3D2Dh
  80. .data:0804A198                 dd 91646C97h
  81. .data:0804A19C                 dd 0E6635C01h
  82. .data:0804A1A0                 dd 6B6B51F4h
  83. .data:0804A1A4                 dd 1C6C6162h
  84. .data:0804A1A8                 dd 856530D8h
  85. .data:0804A1AC                 dd 0F262004Eh
  86. .data:0804A1B0                 dd 6C0695EDh
  87. .data:0804A1B4                 dd 1B01A57Bh
  88. .data:0804A1B8                 dd 8208F4C1h
  89. .data:0804A1BC                 dd 0F50FC457h
  90. .data:0804A1C0                 dd 65B0D9C6h
  91. .data:0804A1C4                 dd 12B7E950h
  92. .data:0804A1C8                 dd 8BBEB8EAh
  93. .data:0804A1CC                 dd 0FCB9887Ch
  94. .data:0804A1D0                 dd 62DD1DDFh
  95. .data:0804A1D4                 dd 15DA2D49h
  96. .data:0804A1D8                 dd 8CD37CF3h
  97. .data:0804A1DC                 dd 0FBD44C65h
  98. .data:0804A1E0                 dd 4DB26158h
  99. .data:0804A1E4                 dd 3AB551CEh
  100. .data:0804A1E8                 dd 0A3BC0074h
  101. .data:0804A1EC                 dd 0D4BB30E2h
  102. .data:0804A1F0                 dd 4ADFA541h
  103. .data:0804A1F4                 dd 3DD895D7h
  104. .data:0804A1F8                 dd 0A4D1C46Dh
  105. .data:0804A1FC                 dd 0D3D6F4FBh
  106. .data:0804A200                 dd 4369E96Ah
  107. .data:0804A204                 dd 346ED9FCh
  108. .data:0804A208                 dd 0AD678846h
  109. .data:0804A20C                 dd 0DA60B8D0h
  110. .data:0804A210                 dd 44042D73h
  111. .data:0804A214                 dd 33031DE5h
  112. .data:0804A218                 dd 0AA0A4C5Fh
  113. .data:0804A21C                 dd 0DD0D7CC9h
  114. .data:0804A220                 dd 5005713Ch
  115. .data:0804A224                 dd 270241AAh
  116. .data:0804A228                 dd 0BE0B1010h
  117. .data:0804A22C                 dd 0C90C2086h
  118. .data:0804A230                 dd 5768B525h
  119. .data:0804A234                 dd 206F85B3h
  120. .data:0804A238                 dd 0B966D409h
  121. .data:0804A23C                 dd 0CE61E49Fh
  122. .data:0804A240                 dd 5EDEF90Eh
  123. .data:0804A244                 dd 29D9C998h
  124. .data:0804A248                 dd 0B0D09822h
  125. .data:0804A24C                 dd 0C7D7A8B4h
  126. .data:0804A250                 dd 59B33D17h
  127. .data:0804A254                 dd 2EB40D81h
  128. .data:0804A258                 dd 0B7BD5C3Bh
  129. .data:0804A25C                 dd 0C0BA6CADh
  130. .data:0804A260                 dd 0EDB88320h
  131. .data:0804A264                 dd 9ABFB3B6h
  132. .data:0804A268                 dd 3B6E20Ch
  133. .data:0804A26C                 dd 74B1D29Ah
  134. .data:0804A270                 dd 0EAD54739h
  135. .data:0804A274                 dd 9DD277AFh
  136. .data:0804A278                 dd 4DB2615h
  137. .data:0804A27C                 dd 73DC1683h
  138. .data:0804A280                 dd 0E3630B12h
  139. .data:0804A284                 dd 94643B84h
  140. .data:0804A288                 dd 0D6D6A3Eh
  141. .data:0804A28C                 dd 7A6A5AA8h
  142. .data:0804A290                 dd 0E40ECF0Bh
  143. .data:0804A294                 dd 9309FF9Dh
  144. .data:0804A298                 dd 0A00AE27h
  145. .data:0804A29C                 dd 7D079EB1h
  146. .data:0804A2A0                 dd 0F00F9344h
  147. .data:0804A2A4                 dd 8708A3D2h
  148. .data:0804A2A8                 dd 1E01F268h
  149. .data:0804A2AC                 dd 6906C2FEh
  150. .data:0804A2B0                 dd 0F762575Dh
  151. .data:0804A2B4                 dd 806567CBh
  152. .data:0804A2B8                 dd 196C3671h
  153. .data:0804A2BC                 dd 6E6B06E7h
  154. .data:0804A2C0                 dd 0FED41B76h
  155. .data:0804A2C4                 dd 89D32BE0h
  156. .data:0804A2C8                 dd 10DA7A5Ah
  157. .data:0804A2CC                 dd 67DD4ACCh
  158. .data:0804A2D0                 dd 0F9B9DF6Fh
  159. .data:0804A2D4                 dd 8EBEEFF9h
  160. .data:0804A2D8                 dd 17B7BE43h
  161. .data:0804A2DC                 dd 60B08ED5h
  162. .data:0804A2E0                 dd 0D6D6A3E8h
  163. .data:0804A2E4                 dd 0A1D1937Eh
  164. .data:0804A2E8                 dd 38D8C2C4h
  165. .data:0804A2EC                 dd 4FDFF252h
  166. .data:0804A2F0                 dd 0D1BB67F1h
  167. .data:0804A2F4                 dd 0A6BC5767h
  168. .data:0804A2F8                 dd 3FB506DDh
  169. .data:0804A2FC                 dd 48B2364Bh
  170. .data:0804A300                 dd 0D80D2BDAh
  171. .data:0804A304                 dd 0AF0A1B4Ch
  172. .data:0804A308                 dd 36034AF6h
  173. .data:0804A30C                 dd 41047A60h
  174. .data:0804A310                 dd 0DF60EFC3h
  175. .data:0804A314                 dd 0A867DF55h
  176. .data:0804A318                 dd 316E8EEFh
  177. .data:0804A31C                 dd 4669BE79h
  178. .data:0804A320                 dd 0CB61B38Ch
  179. .data:0804A324                 dd 0BC66831Ah
  180. .data:0804A328                 dd 256FD2A0h
  181. .data:0804A32C                 dd 5268E236h
  182. .data:0804A330                 dd 0CC0C7795h
  183. .data:0804A334                 dd 0BB0B4703h
  184. .data:0804A338                 dd 220216B9h
  185. .data:0804A33C                 dd 5505262Fh
  186. .data:0804A340                 dd 0C5BA3BBEh
  187. .data:0804A344                 dd 0B2BD0B28h
  188. .data:0804A348                 dd 2BB45A92h
  189. .data:0804A34C                 dd 5CB36A04h
  190. .data:0804A350                 dd 0C2D7FFA7h
  191. .data:0804A354                 dd 0B5D0CF31h
  192. .data:0804A358                 dd 2CD99E8Bh
  193. .data:0804A35C                 dd 5BDEAE1Dh
  194. .data:0804A360                 dd 9B64C2B0h
  195. .data:0804A364                 dd 0EC63F226h
  196. .data:0804A368                 dd 756AA39Ch
  197. .data:0804A36C                 dd 26D930Ah
  198. .data:0804A370                 dd 9C0906A9h
  199. .data:0804A374                 dd 0EB0E363Fh
  200. .data:0804A378                 dd 72076785h
  201. .data:0804A37C                 dd 5005713h
  202. .data:0804A380                 dd 95BF4A82h
  203. .data:0804A384                 dd 0E2B87A14h
  204. .data:0804A388                 dd 7BB12BAEh
  205. .data:0804A38C                 dd 0CB61B38h
  206. .data:0804A390                 dd 92D28E9Bh
  207. .data:0804A394                 dd 0E5D5BE0Dh
  208. .data:0804A398                 dd 7CDCEFB7h
  209. .data:0804A39C                 dd 0BDBDF21h
  210. .data:0804A3A0                 dd 86D3D2D4h
  211. .data:0804A3A4                 dd 0F1D4E242h
  212. .data:0804A3A8                 dd 68DDB3F8h
  213. .data:0804A3AC                 dd 1FDA836Eh
  214. .data:0804A3B0                 dd 81BE16CDh
  215. .data:0804A3B4                 dd 0F6B9265Bh
  216. .data:0804A3B8                 dd 6FB077E1h
  217. .data:0804A3BC                 dd 18B74777h
  218. .data:0804A3C0                 dd 88085AE6h
  219. .data:0804A3C4                 dd 0FF0F6A70h
  220. .data:0804A3C8                 dd 66063BCAh
  221. .data:0804A3CC                 dd 11010B5Ch
  222. .data:0804A3D0                 dd 8F659EFFh
  223. .data:0804A3D4                 dd 0F862AE69h
  224. .data:0804A3D8                 dd 616BFFD3h
  225. .data:0804A3DC                 dd 166CCF45h
  226. .data:0804A3E0                 dd 0A00AE278h
  227. .data:0804A3E4                 dd 0D70DD2EEh
  228. .data:0804A3E8                 dd 4E048354h
  229. .data:0804A3EC                 dd 3903B3C2h
  230. .data:0804A3F0                 dd 0A7672661h
  231. .data:0804A3F4                 dd 0D06016F7h
  232. .data:0804A3F8                 dd 4969474Dh
  233. .data:0804A3FC                 dd 3E6E77DBh
  234. .data:0804A400                 dd 0AED16A4Ah
  235. .data:0804A404                 dd 0D9D65ADCh
  236. .data:0804A408                 dd 40DF0B66h
  237. .data:0804A40C                 dd 37D83BF0h
  238. .data:0804A410                 dd 0A9BCAE53h
  239. .data:0804A414                 dd 0DEBB9EC5h
  240. .data:0804A418                 dd 47B2CF7Fh
  241. .data:0804A41C                 dd 30B5FFE9h
  242. .data:0804A420                 dd 0BDBDF21Ch
  243. .data:0804A424                 dd 0CABAC28Ah
  244. .data:0804A428                 dd 53B39330h
  245. .data:0804A42C                 dd 24B4A3A6h
  246. .data:0804A430                 dd 0BAD03605h
  247. .data:0804A434                 dd 0CDD70693h
  248. .data:0804A438                 dd 54DE5729h
  249. .data:0804A43C                 dd 23D967BFh
  250. .data:0804A440                 dd 0B3667A2Eh
  251. .data:0804A444                 dd 0C4614AB8h
  252. .data:0804A448                 dd 5D681B02h
  253. .data:0804A44C                 dd 2A6F2B94h
  254. .data:0804A450                 dd 0B40BBE37h
  255. .data:0804A454                 dd 0C30C8EA1h
  256. .data:0804A458                 dd 5A05DF1Bh
  257. .data:0804A45C                 dd 2D02EF8Dh */
  258. uint32_t srcbuf[256] = {...};
  259.  
  260. /* Output buffer */
  261. uint32_t outbuf[0x98];
  262. int outlen = 0;
  263.  
  264. /* What the output buffer should be
  265. .data:0804A460 cmpbuf          dd 76D32BE0h            ; DATA XREF: main+4Er
  266. .data:0804A464                 dd 27C7D869h
  267. .data:0804A468                 dd 5976A4D4h
  268. .data:0804A46C                 dd 0B01501E1h
  269. .data:0804A470                 dd 0A4145DAEh
  270. .data:0804A474                 dd 0BECE89D3h
  271. .data:0804A478                 dd 20AA1C70h
  272. .data:0804A47C                 dd 9817B97Fh
  273. .data:0804A480                 dd 50C0E8FFh
  274. .data:0804A484                 dd 5976A4D4h
  275. .data:0804A488                 dd 0C9C9B945h
  276. .data:0804A48C                 dd 9817B97Fh
  277. .data:0804A490                 dd 0AACFD59Ch
  278. .data:0804A494                 dd 43AC70A9h
  279. .data:0804A498                 dd 0B778C5F8h
  280. .data:0804A49C                 dd 20AA1C70h
  281. .data:0804A4A0                 dd 9817B97Fh
  282. .data:0804A4A4                 dd 50C0E8FFh
  283. .data:0804A4A8                 dd 5976A4D4h
  284. .data:0804A4AC                 dd 0C9C9B945h
  285. .data:0804A4B0                 dd 4A1A3C82h
  286. .data:0804A4B4                 dd 9817B97Fh
  287. .data:0804A4B8                 dd 5976A4D4h
  288. .data:0804A4BC                 dd 0C9C9B945h
  289. .data:0804A4C0                 dd 34AB403Fh
  290. .data:0804A4C4                 dd 0DC13940Ch
  291. .data:0804A4C8                 dd 9817B97Fh
  292. .data:0804A4CC                 dd 291C505Bh
  293. .data:0804A4D0                 dd 451AC5B6h
  294. .data:0804A4D4                 dd 451AC5B6h
  295. .data:0804A4D8                 dd 0C07FF56Eh
  296. .data:0804A4DC                 dd 451AC5B6h
  297. .data:0804A4E0                 dd 451AC5B6h
  298. .data:0804A4E4                 dd 0B01501E1h
  299. .data:0804A4E8                 dd 5E1B60CDh
  300. .data:0804A4EC                 dd 0DDC8E50Ah
  301. .data:0804A4F0                 dd 0AACFD59Ch
  302. .data:0804A4F4                 dd 4D77F89Bh */
  303. uint32_t cmpbuf[0x26] = {...};
  304.  
  305. /* Called at program start, setting initial values of outbuf */
  306. void init_outbuf()
  307. {
  308.     for (int i = 0; i < 0x98; i++) outbuf[i] = outbuf[i] ^ 0xCAF3B33B;
  309. }
  310.  
  311. /* Main program */
  312. void main()
  313. {
  314.     /* Get and obfuscate the password */
  315.     for (int i = 0; i < 0x26; i++)
  316.     {
  317.         /* Get a char of user input */
  318.         uint8_t ch = get_user_char();
  319.  
  320.         /* Pick the XOR key, based on whether this is our first loop iteration */
  321.         uint32_t key;
  322.         if (outlen == 0) key = 0;
  323.         else key = outbuf[outlen];
  324.  
  325.         /* Do some obfuscation of the character */
  326.         key = ~key;
  327.         key = srcbuf[(uint8_t)(ch ^ key)] ^ (key >> 8);
  328.         key = ~key;
  329.  
  330.         /* Add to the output buffer and move on */
  331.         outbuf[outlen] = key;
  332.         outlen++;
  333.     }
  334.  
  335.     /* Compare to what it should be */
  336.     bool valid = true;
  337.     for (int i = 0; i < 0x26; i++) if (outbuf[i] != cmpbuf[i]) valid = false;
  338.  
  339.     if (valid) printf("great");
  340.     else printf("woaw");
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement