对程序进行obfuscate在软件安全领域有诸多应用,其直接的目的就是对那些试图进行逆向工程的努力带来一些困扰。假设你已经阅读了本系列文章中前面的几篇,并已经掌握了在LLVM中编写Pass的基本方法,本文将介绍如何通过在LLVM中加入相关Pass的方法实现对程序的扰乱。本文主要根据文献【1】整理而得,部分英文摘自原文。

〇、一些准备工作

我们所有的实验都是在 mac OS 上进行的,所用的IDE是Xcode。当然你使用cmake或者ninja来build程序,或者在Ubuntu下开展如下实验也是可以的,大体方法都是一致的。首先我们编写一个简单的pass如下,它的作用是遍历每个Basic Block,当它遇到一个Basic Block时,就输出一条信息“I am running a block...”。

#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/IPO/PassManagerBuilder.h"using namespace llvm;namespace {class MyObfPass01 : public BasicBlockPass {public:static char ID;MyOb

LLVM编写Pass对程序进行obfuscate相关推荐

  1. java结果分行显示_编写一个java程序。分行显示自己的姓名,地址,电话!用Test.java命名。_学小易找答案...

    [单选题]16.骨骼肌进行完全强直收缩时,相邻两次刺激的时间间隔应 [填空题]实习岗位名称 [单选题]神经调节的基本方式是: [单选题]Thank you for your nice gifts. - ...

  2. Linux环境下编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜

    题目:编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜,如果用户猜的数大于答案,则提示大了,如果用户猜的数小于答案,则提示小了.当用户猜对时提示:猜对了. #! /bi ...

  3. 试编写一个汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数

    试编写一个汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数 data segment data ends stack segment stack dw 30h dup ...

  4. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来

    试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来 DATA SEGMENT DATA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUM ...

  5. 【未完成】[Spark SQL_2] 在 IDEA 中编写 Spark SQL 程序

    0. 说明 在 IDEA 中编写 Spark SQL 程序,分别编写 Java 程序 & Scala 程序 1. 编写 Java 程序 待补充 2. 编写 Scala 程序 待补充 转载于:h ...

  6. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南20:使用安全管理器创建一个安全的沙盒...

    本节书摘来异步社区<Java编码指南:编写安全可靠程序的75条建议>一书中的第1章,第1.20节,作者:[美]Fred Long(弗雷德•朗), Dhruv Mohindra(德鲁•莫欣达 ...

  7. 《Java编码指南:编写安全可靠程序的75条建议(英文版)》—— 2.7 修复错误...

    本节书摘来异步社区<Java编码指南:编写安全可靠程序的75条建议(英文版)>一书中的第2章,第2.7节,作者:[美]Fred Long(弗雷德•朗),Dhruv Mohindra(德鲁• ...

  8. .java编写一个梯形类lader_能够完成相关计算above为高_【Java】编写一个应用程序计算梯形和圆形的面积...

    说明:这是武汉理工大学计算机学院[Java语言程序设计]课程实验1:编写一个应用程序计算梯形和圆形的面积. 谨记:纸上得来终觉浅,绝知此事要躬行. Java语言程序设计--实验1:类的设计与对象使用 ...

  9. java jmf 视屏监控的核心代码_Java中利用JMF编写摄像头拍照程序_java

    我把程序分为两种,有趣的和无趣的,最近做了几个有趣的项目,其中一个,应当就算是摄像头拍照程序了.用于现场拍照,生成照片,主要用到java Media Framework(JMF). 首先到SUN下载最 ...

  10. 23.2 编写笨的程序

    23.2 编写笨的程序 大谈笨的学问,似乎有失厚道.编写笨的程序,有时候可能会让程序难看一些,有的时候则会显得"档次很低".但是笨的程序往往能够有效的克服潜在的BUG产生. 转载于 ...

最新文章

  1. pytorch深度学习_了解如何使用PyTorch进行深度学习
  2. Oracle数据库中的优化方案
  3. Android NullPointerException解决方法(空指针异常)
  4. 【工具推荐】ELMAH——可插拔错误日志工具(转)
  5. 那份让我想死的化工原理补考试卷
  6. 《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构
  7. MongnDB 主从复制
  8. 那是我夕阳下的奔跑--一个萌新的觉醒
  9. (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
  10. 大学生开学必备物品清单的详细介绍
  11. vue富文本编辑器 Vue-Quill-Editor
  12. 计算机专业研究生和本科生工资差距,本科生和研究生的工资差距,到底有多大?...
  13. 微信域名防封的解决方案
  14. 1602液晶指定位置光标闪烁程序
  15. 日期相关(类与方法)
  16. 在每一个时光寻找,寻找适合我的孤岛。
  17. Android学习笔记(2)——探究活动
  18. 下列关于java泛型的说法正确_下列关于泛型的说法不正确的一项是:( )_学小易找答案...
  19. 在word中利用Endnote导入文献时提示“无法编辑range”的解决办法-基本上通过以下方法都可以解决
  20. 青春痘的日常治疗方法

热门文章

  1. wps启用编辑按钮在哪里_wps页面设置在哪里?wps页面设置使用教程
  2. centos时钟同步
  3. 为什么域名能够访问网站,而直接使用IP不可以
  4. 使用python获取vCenter默认警报定义
  5. adc0809工作过程C语言,ADC0809引脚图、时序图、工作流程图详解
  6. spss分析方法-相关分析(转载)
  7. java17长期支持版本_Java 8后的首个长期支持版本Java 11
  8. xfs文件系统误删除文件恢复(testdisk工具)
  9. vue中views新建文件夹的代码规范
  10. Youtube视频传输规律