锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
某安全SDK的ARM级VMP简单分析

作者: 佚名  日期:2017-06-30 20:16:50   来源: 本站整理



样本来源于阿里安全SDK,APP为狼人杀,这个样本并不算真正的VMP,但是有VM的影子,非常值得学习。

阿里安全SDK的libsgmainso-5.3.38.so提取方法:
解压APP,定位lib目录,找到libsgmain.so,该so实际是一个apk文件。将该apk解压后,就能在lib目录中找到真实SO。

样本SO ELF文件节表有问题,IDA无法正常打开,进行简单修复即可。

修复方法:
打开010 套模板,Elf32_Half e_shnum置0即可。

运作原理:

 



其中有一张表,该表记录了opcode对应Handler的偏移地址。

Handler地址计算:
Vm_table 为该表起始地址。
Vm_base 为一个对齐地址等于Vm_table + 1
Offset = vm_table[opcode * 4]
HandlerAddr = offset + vm_base
Opcode字节码不集中,采用指令链接形式把所有opcode串联起来。

本文样本的解析部分结果(手动计算):
Op Handler
1D CF9D
1E D3B3
10 D264
2B D5F4
25 D4F0
2A D5CC
0C 01F8
29 .....
...       ....
可以根据前面的公式自行写一个脚本提取Opcode。

Op 链接例子:例如0x1E的Handler 0xD3B3中,在主要代码执行后,有一条指令来设置下一条指令的Opcode 0x10。如图:
 
所以,0x1E的下一条指令为0x10。 




分析JNI_OnLoad 函数,单步一小会有如下风景:
 
我们可以在这里清晰的看到虚拟机入口和第一条指令设置的代码以及VM相关的数据。


函数sub_8ccA0 为重要函数(忽略转移代码)
 自行看注释理解吧


热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等