@@ -535,13 +535,11 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
535
535
case 0xE589 : // 89 E5 : mov ebp, esp
536
536
case 0xC18B : // 8B C1 : mov eax, ecx
537
537
case 0xC033 : // 33 C0 : xor eax, eax
538
- case 0x8bec : // EC 8B : mov ebp, esp
539
538
case 0xC933 : // 33 C9 : xor ecx, ecx
540
539
case 0xD233 : // 33 D2 : xor edx, edx
541
- case 0xc084 : // 84 c0 : test al,al
542
- case 0xdb84 : // 84 db : test bl,bl
543
- case 0xc984 : // 84 c9 : test cl,cl
544
- case 0xd284 : // 84 d2 : test dl,dl
540
+ case 0xDB84 : // 84 DB : test bl,bl
541
+ case 0xC984 : // 84 C9 : test cl,cl
542
+ case 0xD284 : // 84 D2 : test dl,dl
545
543
return 2 ;
546
544
547
545
// Cannot overwrite control-instruction. Return 0 to indicate failure.
@@ -550,8 +548,8 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
550
548
}
551
549
552
550
switch (0x00FFFFFF & *(u32 *)address) {
553
- case 0x83e4f8 : // F8 E4 83 : and esp, 0xFFFFFFF8
554
- case 0x83ec64 : // 64 EC 83 : sub esp, 64h
551
+ case 0xF8E484 : // 83 E4 F8 : and esp, 0xFFFFFFF8
552
+ case 0x64EC83 : // 83 EC 64 : sub esp, 64h
555
553
return 3 ;
556
554
case 0x24A48D : // 8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]
557
555
return 7 ;
@@ -562,7 +560,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
562
560
case 0xA1 : // A1 XX XX XX XX XX XX XX XX :
563
561
// movabs eax, dword ptr ds:[XXXXXXXX]
564
562
return 9 ;
565
- case 0xf2 :
563
+ case 0xF2 :
566
564
switch (*(u32 *)(address + 1 )) {
567
565
case 0x2444110f : // f2 0f 11 44 24 XX movsd mmword ptr [rsp +
568
566
// XX], xmm0
@@ -601,15 +599,15 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
601
599
case 0x5641 : // push r14
602
600
case 0x5741 : // push r15
603
601
case 0x9066 : // Two-byte NOP
604
- case 0xc084 : // test al, al
605
- case 0x018a : // mov al, byte ptr [rcx]
602
+ case 0xC084 : // test al, al
603
+ case 0x018A : // mov al, byte ptr [rcx]
606
604
return 2 ;
607
605
608
- case 0x7e80 : // 80 7e YY XX cmp BYTE PTR [rsi+YY], XX
609
- case 0x7d80 : // 80 7d YY XX cmp BYTE PTR [rdx+YY], XX
610
- case 0x7a80 : // 80 7a YY XX cmp BYTE PTR [rdx+YY], XX
606
+ case 0x7E80 : // 80 7E YY XX cmp BYTE PTR [rsi+YY], XX
607
+ case 0x7D80 : // 80 7D YY XX cmp BYTE PTR [rdx+YY], XX
608
+ case 0x7A80 : // 80 7A YY XX cmp BYTE PTR [rdx+YY], XX
611
609
case 0x7880 : // 80 78 YY XX cmp BYTE PTR [rax+YY], XX
612
- case 0x7b80 : // 80 7b YY XX cmp BYTE PTR [rbx+YY], XX
610
+ case 0x7B80 : // 80 7B YY XX cmp BYTE PTR [rbx+YY], XX
613
611
case 0x7980 : // 80 79 YY XX cmp BYTE ptr [rcx+YY], XX
614
612
return 4 ;
615
613
@@ -618,11 +616,11 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
618
616
*rel_offset = 2 ;
619
617
return 6 ;
620
618
621
- case 0x7e81 : // 81 7e YY XX XX XX XX cmp DWORD PTR [rsi+YY], XX XX XX XX
622
- case 0x7d81 : // 81 7d YY XX XX XX XX cmp DWORD PTR [rdx+YY], XX XX XX XX
623
- case 0x7a81 : // 81 7a YY XX XX XX XX cmp DWORD PTR [rdx+YY], XX XX XX XX
619
+ case 0x7E81 : // 81 7E YY XX XX XX XX cmp DWORD PTR [rsi+YY], XX XX XX XX
620
+ case 0x7D81 : // 81 7D YY XX XX XX XX cmp DWORD PTR [rdx+YY], XX XX XX XX
621
+ case 0x7A81 : // 81 7A YY XX XX XX XX cmp DWORD PTR [rdx+YY], XX XX XX XX
624
622
case 0x7881 : // 81 78 YY XX XX XX XX cmp DWORD PTR [rax+YY], XX XX XX XX
625
- case 0x7b81 : // 81 78 YY XX XX XX XX cmp DWORD PTR [rbx+YY], XX XX XX XX
623
+ case 0x7B81 : // 81 78 YY XX XX XX XX cmp DWORD PTR [rbx+YY], XX XX XX XX
626
624
case 0x7981 : // 81 79 YY XX XX XX XX cmp dword ptr [rcx+YY], XX XX XX XX
627
625
return 7 ;
628
626
}
@@ -692,27 +690,26 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
692
690
case 0xf88349 : // 49 83 f8 XX : cmp r8, XX
693
691
return 4 ;
694
692
695
- case 0x246483 : // 83 64 24 00 00 : and DWORD PTR [rsp+xx],0x0
693
+ case 0x246483 : // 83 64 24 XX YY : and DWORD PTR [rsp+XX], YY
696
694
return 5 ;
697
695
698
- case 0x788166 : // 66 81 78 YY XX XX cmp WORD PTR [rax+0xYY ], XX XX
699
- case 0x798166 : // 66 81 79 YY XX XX cmp WORD PTR [rcx+0xYY ], XX XX
700
- case 0x7a8166 : // 66 81 7a YY XX XX cmp WORD PTR [rdx+0xYY ], XX XX
701
- case 0x7b8166 : // 66 81 7b YY XX XX cmp WORD PTR [rbx+0xYY ], XX XX
702
- case 0x7e8166 : // 66 81 7e YY XX XX cmp WORD PTR [rsi+0xYY ], XX XX
703
- case 0x7f8166 : // 66 81 7f YY XX XX cmp WORD PTR [rdi+0xYY ], XX XX
696
+ case 0x788166 : // 66 81 78 XX YY YY cmp WORD PTR [rax+XX ], YY YY
697
+ case 0x798166 : // 66 81 79 XX YY YY cmp WORD PTR [rcx+XX ], YY YY
698
+ case 0x7a8166 : // 66 81 7a XX YY YY cmp WORD PTR [rdx+XX ], YY YY
699
+ case 0x7b8166 : // 66 81 7b XX YY YY cmp WORD PTR [rbx+XX ], YY YY
700
+ case 0x7e8166 : // 66 81 7e XX YY YY cmp WORD PTR [rsi+XX ], YY YY
701
+ case 0x7f8166 : // 66 81 7f XX YY YY cmp WORD PTR [rdi+XX ], YY YY
704
702
return 6 ;
705
703
706
704
case 0xec8148 : // 48 81 EC XX XX XX XX : sub rsp, XXXXXXXX
707
705
return 7 ;
708
- case 0x788141 : // 41 81 78 YY XX XX XX XX cmp DWORD PTR [r8+YY], XX XX XX
709
- // XX
710
- case 0x798141 : // r9
711
- case 0x7a8141 : // r10
712
- case 0x7b8141 : // r11
713
- case 0x7c8141 : // r12
714
- case 0x7d8141 : // r13
715
- case 0x7e8141 : // r14
706
+ case 0x788141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r8+YY], XX XX XX XX
707
+ case 0x798141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r9+YY], XX XX XX XX
708
+ case 0x7a8141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r10+YY], XX XX XX XX
709
+ case 0x7b8141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r11+YY], XX XX XX XX
710
+ case 0x7c8141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r12+YY], XX XX XX XX
711
+ case 0x7d8141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r13+YY], XX XX XX XX
712
+ case 0x7e8141 : // 41 81 78 XX YY YY YY YY : cmp DWORD PTR [r14+YY], XX XX XX XX
716
713
case 0x7f8141 : // 41 81 78 YY XX XX XX XX cmp DWORD P [r15+YY], XX XX XX XX
717
714
case 0x247c81 : // 81 7c 24 YY XX XX XX XX cmp DWORD P [rsp+YY], XX XX XX XX
718
715
return 8 ;
0 commit comments