diff --git a/src/rtdisasm_test.c b/src/rtdisasm_test.c index 37a0f22..2d4ed47 100644 --- a/src/rtdisasm_test.c +++ b/src/rtdisasm_test.c @@ -4,8 +4,34 @@ extern void test_1(); extern void test_1_end(); +// TEST 2 - CRC calculation function to put rtdisasm to test + +static unsigned int test_2(unsigned char *message) +{ + int i, j; + unsigned int byte, crc, mask; + + i = 0; + crc = 0xFFFFFFFF; + while (message[i] != 0) + { + byte = message[i]; + crc = crc ^ byte; + for (j = 7; j >= 0; j--) + { + mask = -(crc & 1); + crc = (crc >> 1) ^ (0xEDB88320 & mask); + } + i = i + 1; + } + __asm__("nop"); // TARGET + return ~crc; +} +static void test_2_end() {} + int main() { + printf("== TEST 1 ==\n"); size_t size = (uintptr_t)test_1_end - (uintptr_t)test_1; printf("size %lu\n", size); // int len = rtdisasm_analyze_single((const uint8_t*)test_1, size, NULL); @@ -19,5 +45,11 @@ int main() printf("RT_TARGET_SYSENTER %d\n", rtdisasm_find_target((const uint8_t*)test_1, size, RT_TARGET_SYSENTER)); printf("RT_TARGET_SYSCALL %d\n", rtdisasm_find_target((const uint8_t*)test_1, size, RT_TARGET_SYSCALL)); + printf("== TEST 2 ==\n"); + size = (uintptr_t)test_2_end - (uintptr_t)test_2; + printf("size %lu\n", size); + + printf("test2 %d\n", rtdisasm_find_target((const uint8_t*)test_2, size, RT_TARGET_NOP)); + return 0; } \ No newline at end of file