树莓派 linux hook,如何在树莓派上跑unidbg

我是起了一个springboot,在里面调用unidbg。服务在centos上跑是正常的,但是效率比直接hook手机算差一些,直接hook手机的话,100ms以内就算出来了。用unidbg算的话,大概要500ms左右。

后面就想提高效率,不知道把unidbg放到树莓派上跑arm,效率会不会高一些。

直接把unidbg放到树莓派上,有一个错误:

Exception in thread "worker@583ecf" java.lang.NoClassDefFoundError: Could not initialize class unicorn.Unicorn

at com.github.unidbg.AbstractEmulator.(AbstractEmulator.java:80)

at com.github.unidbg.arm.AbstractARMEmulator.(AbstractARMEmulator.java:47)

at com.github.unidbg.linux.android.AndroidARMEmulator.(AndroidARMEmulator.java:50)

at com.github.unidbg.linux.android.AndroidARMEmulator.(AndroidARMEmulator.java:42)

at com.inewy.unidbgweb.unidbg.CcdWorker.(CcdWorker.java:40)

at com.inewy.unidbgweb.unidbg.CcdWorkerPool.lambda$new$0(CcdWorkerPool.java:23)

at com.inewy.unidbgweb.unidbg.worker.DefaultWorkerPool.createWorker(DefaultWorkerPool.java:46)

at com.inewy.unidbgweb.unidbg.worker.DefaultWorkerPool.run(DefaultWorkerPool.java:65)

at java.lang.Thread.run(Thread.java:745)

5a5fb6f24f3bf4dda12627f2d9a095fb.png

看了一下jar包里,可能是unicorn没有arm平台的库,然后我去unicorn官网按教程在树莓派上编译,再继续跑unidbg,有一个新的错误:

Exception in thread "worker@56be13" java.lang.NoSuchMethodError: unicorn.Unicorn.hook_add_new(Lunicorn/EventMemHook;ILjava/lang/Object;)Ljava/util/Map;

at com.github.unidbg.arm.AbstractARMEmulator.(AbstractARMEmulator.java:51)

at com.github.unidbg.linux.android.AndroidARMEmulator.(AndroidARMEmulator.java:50)

at com.github.unidbg.linux.android.AndroidARMEmulator.(AndroidARMEmulator.java:42)

at com.inewy.unidbgweb.unidbg.CcdWorker.(CcdWorker.java:40)

at com.inewy.unidbgweb.unidbg.CcdWorkerPool.lambda$new$0(CcdWorkerPool.java:23)

at com.inewy.unidbgweb.unidbg.worker.DefaultWorkerPool.createWorker(DefaultWorkerPool.java:46)

at com.inewy.unidbgweb.unidbg.worker.DefaultWorkerPool.run(DefaultWorkerPool.java:65)

at java.lang.Thread.run(Thread.java:745)

unidbg用的unicorn和官方不一样,增加了一些东西,然后我把大佬的版本https://github.com/zhkl0228/unicorn下下来准备重新编一下。

但是编译出错误如下:

pi@raspberrypi:~/Desktop/unicorn-zhkl0228 $ ./make.sh

GEN libunicorn.so.1

GEN libunicorn.a

ar: creating libunicorn.a

make -C samples

make[1]: Entering directory '/home/pi/Desktop/unicorn-zhkl0228/samples'

CC sample_arm.o

CC sample_armeb.o

LINK sample_arm

../libunicorn.so: undefined reference to `qemu_log'

../libunicorn.so: undefined reference to `qemu_anon_ram_free'

../libunicorn.so: undefined reference to `helper_div_i32'

../libunicorn.so: undefined reference to `register_accel_types'

../libunicorn.so: undefined reference to `smp_cpus'

../libunicorn.so: undefined reference to `qemu_thread_create'

../libunicorn.so: undefined reference to `g_malloc'

../libunicorn.so: undefined reference to `helper_divu_i64'

../libunicorn.so: undefined reference to `qemu_fls'

../libunicorn.so: undefined reference to `bitmap_clear'

../libunicorn.so: undefined reference to `g_new0_'

../libunicorn.so: undefined reference to `cpu_generic_init'

../libunicorn.so: undefined reference to `g_free'

../libunicorn.so: undefined reference to `qemu_thread_join'

../libunicorn.so: undefined reference to `g_new_'

../libunicorn.so: undefined reference to `qemu_getauxval'

../libunicorn.so: undefined reference to `object_property_set_bool'

../libunicorn.so: undefined reference to `bitmap_set'

../libunicorn.so: undefined reference to `object_initialize'

../libunicorn.so: undefined reference to `pstrcpy'

../libunicorn.so: undefined reference to `g_renew_'

../libunicorn.so: undefined reference to `object_class_is_abstract'

../libunicorn.so: undefined reference to `crc32c'

../libunicorn.so: undefined reference to `AES_sbox'

../libunicorn.so: undefined reference to `g_hash_table_lookup'

../libunicorn.so: undefined reference to `visit_type_str'

../libunicorn.so: undefined reference to `g_list_prepend'

../libunicorn.so: undefined reference to `visit_type_uint64'

../libunicorn.so: undefined reference to `g_list_sort'

../libunicorn.so: undefined reference to `error_set_errno'

../libunicorn.so: undefined reference to `object_property_del_child'

../libunicorn.so: undefined reference to `qemu_clock_get_ns'

../libunicorn.so: undefined reference to `helper_divu_i32'

../libunicorn.so: undefined reference to `qemu_register_machine'

../libunicorn.so: undefined reference to `g_hash_table_new'

../libunicorn.so: undefined reference to `qemu_log_mask'

../libunicorn.so: undefined reference to `pstrcat'

../libunicorn.so: undefined reference to `object_class_dynamic_cast_assert'

../libunicorn.so: undefined reference to `object_property_add_child'

../libunicorn.so: undefined reference to `object_get_canonical_path'

../libunicorn.so: undefined reference to `cpu_dump_state'

../libunicorn.so: undefined reference to `cpu_exit'

../libunicorn.so: undefined reference to `type_register_static'

../libunicorn.so: undefined reference to `object_class_by_name'

../libunicorn.so: undefined reference to `g_strdup_printf'

../libunicorn.so: undefined reference to `qemu_system_shutdown_request'

../libunicorn.so: undefined reference to `g_hash_table_new_full'

../libunicorn.so: undefined reference to `visit_type_int32'

../libunicorn.so: undefined reference to `helper_rem_i32'

../libunicorn.so: undefined reference to `qemu_loglevel'

../libunicorn.so: undefined reference to `object_get_class'

../libunicorn.so: undefined reference to `helper_remu_i32'

../libunicorn.so: undefined reference to `mulu64'

../libunicorn.so: undefined reference to `helper_rem_i64'

../libunicorn.so: undefined reference to `qdev_get_machine'

../libunicorn.so: undefined reference to `error_propagate'

../libunicorn.so: undefined reference to `find_next_bit'

../libunicorn.so: undefined reference to `g_int_hash'

../libunicorn.so: undefined reference to `smp_cores'

../libunicorn.so: undefined reference to `helper_shr_i64'

../libunicorn.so: undefined reference to `g_hash_table_insert'

../libunicorn.so: undefined reference to `object_class_get_name'

../libunicorn.so: undefined reference to `object_property_add'

../libunicorn.so: undefined reference to `helper_remu_i64'

../libunicorn.so: undefined reference to `cpu_class_by_name'

../libunicorn.so: undefined reference to `object_new'

../libunicorn.so: undefined reference to `object_get_canonical_path_component'

../libunicorn.so: undefined reference to `g_hash_table_destroy'

../libunicorn.so: undefined reference to `find_next_zero_bit'

../libunicorn.so: undefined reference to `g_list_free'

../libunicorn.so: undefined reference to `cpu_reset'

../libunicorn.so: undefined reference to `smp_threads'

../libunicorn.so: undefined reference to `g_int_equal'

../libunicorn.so: undefined reference to `g_realloc'

../libunicorn.so: undefined reference to `helper_shl_i64'

../libunicorn.so: undefined reference to `g_memdup'

../libunicorn.so: undefined reference to `object_class_dynamic_cast'

../libunicorn.so: undefined reference to `AES_isbox'

../libunicorn.so: undefined reference to `object_unref'

../libunicorn.so: undefined reference to `g_malloc0'

../libunicorn.so: undefined reference to `object_ref'

../libunicorn.so: undefined reference to `object_dynamic_cast_assert'

../libunicorn.so: undefined reference to `helper_sar_i64'

../libunicorn.so: undefined reference to `g_strdup'

../libunicorn.so: undefined reference to `qemu_vfree'

../libunicorn.so: undefined reference to `qemu_system_reset_request'

../libunicorn.so: undefined reference to `qemu_logfile'

../libunicorn.so: undefined reference to `cpu_paging_enabled'

../libunicorn.so: undefined reference to `helper_div_i64'

../libunicorn.so: undefined reference to `cpu_resume'

../libunicorn.so: undefined reference to `AES_ishifts'

../libunicorn.so: undefined reference to `AES_shifts'

../libunicorn.so: undefined reference to `type_register'

../libunicorn.so: undefined reference to `g_hash_table_foreach'

../libunicorn.so: undefined reference to `helper_muluh_i64'

../libunicorn.so: undefined reference to `cpu_get_memory_mapping'

../libunicorn.so: undefined reference to `object_property_add_bool'

../libunicorn.so: undefined reference to `error_abort'

../libunicorn.so: undefined reference to `qemu_anon_ram_alloc'

../libunicorn.so: undefined reference to `helper_mulsh_i64'

../libunicorn.so: undefined reference to `machine_initialize'

../libunicorn.so: undefined reference to `g_list_foreach'

../libunicorn.so: undefined reference to `qemu_memalign'

../libunicorn.so: undefined reference to `muls64'

collect2: error: ld returned 1 exit status

Makefile:104: recipe for target 'sample_arm' failed

make[1]: *** [sample_arm] Error 1

make[1]: Leaving directory '/home/pi/Desktop/unicorn-zhkl0228/samples'

Makefile:225: recipe for target 'all' failed

make: *** [all] Error 2

pi@raspberrypi:~/Desktop/unicorn-zhkl0228/bindings/java $ make

cd .. && python const_generator.py java

make -f Makefile.build all

make[1]: Entering directory '/home/pi/Desktop/unicorn-zhkl0228/bindings/java'

find: `/include': No such file or directory

dirname: missing operand

Try 'dirname --help' for more information.

/bin/javah -classpath target/classes unicorn.Unicorn

gcc -c -fPIC -I/include -I -I../../include unicorn_Unicorn.c -o unicorn_Unicorn.o

In file included from unicorn_Unicorn.c:29:0:

unicorn_Unicorn.h:2:17: fatal error: jni.h: No such file or directory

#include

^

compilation terminated.

Makefile.build:49: recipe for target 'unicorn_Unicorn.o' failed

make[1]: *** [unicorn_Unicorn.o] Error 1

make[1]: Leaving directory '/home/pi/Desktop/unicorn-zhkl0228/bindings/java'

Makefile:4: recipe for target 'all' failed

make: *** [all] Error 2

太菜不会解决,求助大佬

树莓派是:Linux raspberrypi 4.9.28-v7+

jdk 1.8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值