首页
社区
课程
招聘
[原创]arm vmp
发表于: 2019-6-30 07:51 9867

[原创]arm vmp

2019-6-30 07:51
9867

          简介arm vmp是传说中的第五代加固技术 它的表现形式是把二进制 解析成arm汇编 并且执行arm汇编 或者解析成arm变种指令 

        e.g

         #define ARM_CODE "\x37\x00\xa0\xe3\x03\x10\x42\xe0" // mov r0, #0x37; sub r1, r2, r3

        

    原理分析

      http://blog.chinaunix.net/uid-23225855-id-3479492.html


   1.根据 unicorn 可以在x86 上可以运行arm汇编 并且执行arm汇编指令 把unicorn 移植到android端或者ios端 就可以实现arm vmp技术

   2.剔除unicorn 虚拟x86 mips 等等代码 让unicorn 只执行arm汇编指令集

   3.解决trace code不能打印问题

   

     参考:https://github.com/unicorn-engine/unicorn



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-5-5 09:56 被liumengde编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 1867
活跃值: (3973)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
打破零回复
2019-6-30 10:01
0
雪    币: 0
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个如何做到加固代码呢?它似乎只能实现跨平台执行机器指令
2019-7-1 20:01
0
雪    币: 858
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不明觉厉
2019-7-1 22:33
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
android端本来就是虚拟机,再vmp虚拟机一次,这效率是能更低点吗?
2019-7-2 01:36
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
可以把关键算法或是关键检测放到里边 不要把所有的函数虚拟化 
2019-7-2 06:30
0
雪    币: 456
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这和lua 虚拟机,mono 虚拟机。java 虚拟机有啥区别。还不是能反编译
2019-7-2 10:52
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
对于大牛怎么都能破解 
2019-7-2 11:29
0
雪    币: 1101
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感觉没多大意义
2019-7-2 16:07
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
心凉啊 白搞了这么久了
2019-7-2 18:41
0
雪    币: 3712
活跃值: (1401)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
vmp 不是这么理解的,并不是跨平台的虚拟,而是对于指令的虚拟自定义再自解释
2019-7-2 20:50
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
大神你搞出来了 可以借鉴否
2019-7-5 09:33
0
雪    币: 109
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
可以通过LLVM编译器,将原来的IR指令转变成自定义的虚机IR指令,有需要了解虚机加固的,欢迎私信交流
2019-7-9 14:59
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
这个思路不错
2019-7-23 11:33
0
雪    币: 6911
活跃值: (9069)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
15
你好,请问是如何用ndk编译unicorn的?
我编译的出来的unicorn内部的调用约定有问题。
helper_uc_tracecode 函数实际用的是arm标准调用约定,但是qemu里面gen出来的code是通过栈传递参数,请问你是如何解决这个问题的?
https://app.yinxiang.com/fx/ad5c535a-661a-4771-b960-19170b97e97c

最后于 2019-8-2 12:22 被无名侠编辑 ,原因:
2019-8-2 12:21
0
雪    币: 6911
活跃值: (9069)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
16
使用unicorn做vmp不太合适,主要是体积太大了,其它方面我觉得到没什么问题。
删掉符号之后,逆向人员不知道用的unicorn,很操蛋的。
如果在翻译的时候加一个解密变换,那就更好了。
2019-8-2 12:25
0
雪    币: 6911
活跃值: (9069)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
17
imlk 这个如何做到加固代码呢?它似乎只能实现跨平台执行机器指令[em_31]
他是想利用qemu高强度的代码复杂度来隐藏真实代码。你拿着qemu的源码也不一定能在短时间内找到dump代码的地方吧。
2019-8-2 12:27
0
雪    币: 3712
活跃值: (1401)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
18
liumengde 大神你搞出来了 可以借鉴否
如果有兴趣的话,可以发你demo
2019-8-2 12:32
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
把trace_code 干了 @无名侠
2019-11-12 10:56
0
雪    币: 444
活跃值: (2765)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
20
无名侠 你好,请问是如何用ndk编译unicorn的?我编译的出来的unicorn内部的调用约定有问题。helper_uc_tracecode 函数实际用的是arm标准调用约定,但是qemu ...
@无名侠 大佬这问题解决了么,我也遇到这问题了, tcg的代码看着头晕,不知道怎么改
2019-11-26 16:23
0
雪    币: 348
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
@无名侠 已经解决
2020-5-5 09:56
0
游客
登录 | 注册 方可回帖
返回
//