20

2017-5-8 15:15

这个问题就需要来谈谈壳的架构问题了。

壳的三大架构

1.最早的壳几乎都是virus演化来的,大部分都是汇编直接写的。

好处就是直接可以把汇编代码复制出来当作壳的loader代码添加(感染)到程序上

知名的比如aspack,upx,telock,PESpin

2.随着对于反调试要求越来越高,功能越来越多,代码一多就难以维护。

于是诞生了新的壳架构,功能采用DLL开发,使用loader来加载

这里有两个变种:

ShellCode  Loader  +  DLL      ASProtect。Themida,ACProtect等等你所熟悉的加密壳绝大部分都是这样的架构

memory  loader  +  DLL  bigfoot为代表的bambam,ZProtect,eXPressor,npack,ChinaProtect等等

这种架构简单,好维护,更好调试。其实许多其他壳或多或少的都使用这两种架构

3.对于一些纯VM的保护壳,由于没有固定代码(VMProtect等)

所以对于这样的需求首先你需要一个codegen(这个东东将陪伴你写壳的一生)

而且对于codegen其实完全可以构造一个完整的壳代码(调试比较麻烦)

不管什么语言开发的加壳软件最终都要回到opcode操作上,而对于opcode其实用神马语言都差不多

这三种架构介绍完了。那么谈谈java写壳的问题吧,我没有用java写过壳,但是我用C#写过~

楼主的问题其实可以简单的从语言优势上来解答:

如果说开发第三种壳用啥其实都差不多,Java和C#说不定更有优势。

上面我们说到codegen的问题,真正不适合开发的地方其实主要是在各种地址转换上面,

反汇编引擎反汇编的都是opcode结构,然后再将这些opcode串联起来构造出AST,省下的就是mutation,vm,还是其他等等操作了,

如果单纯为了解决opcode--->AST(Abstract  Syntax  Tree抽象语法树)解决了地址转换这个问题的话其实汇编,C\C++还是Java都差不多。

反而由于Java和C#这些语言有很好的容器可以更好的来控制对象

opcode生成其实也不是难事,这些用Java还是C++其实都差不多。

真正的难点就在于上面所说的壳Loader的开发上,不管是汇编,C\C++,Delphi(不管在国内外特别是国外其实许多壳都是Delphi开发的)

都可以直接开发DLL,直接拿来变形后塞进原始程序当作壳的Loader  Main部分。

而Java就只能从codegen来构造壳代码了。。。

这是一件很痛苦的事情(相信我~如果你用过Java写过c语言编译器-带连接器的那种你就会明白痛苦了)

综上所述~介于楼主的语言选择问题,估计多数是只会Java,或者需要在web层调用。

那么最好的办法还是壳主体ASM,C\C++来开发,然后开发成命令行版本,然后Java调用这个模块。

架构就这样了,省下的就是动手操作了~祝君好运~

java 的 exe脱壳_[已解决]求教如何使用java编写加壳程序对PE文件进行加壳相关推荐

  1. 已解决ubuntu虚拟机安装java/jdk

    已解决ubuntu虚拟机安装java/jdk 文章目录 报错代码 报错翻译 报错原因 解决方法 帮忙解决 报错代码 粉丝群里面的一个小伙伴想在ubuntu虚拟机中用yum安装java,但是发生了报错( ...

  2. Java EE 7公共草案已发布。 我需要Java EE Light Profile!

    2012年12月20日,Java EE 7的公共草案已上载. 乍一看,新规范是对Java EE 6中后续规范的改进.例如,我真的很喜欢Web Profile的想法. 遗憾的是它不是Java EE 6 ...

  3. 已解决FileNotFoundError: [WinError 2] 系统找不到指定的文件。

    已解决FileNotFoundError: [WinError 2] 系统找不到指定的文件. 文章目录 报错问题 解决方法 PS 报错问题 之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针 ...

  4. Nginx相关 解决nginx反向代理后页面上的js/css文件无法加载

    解决nginx反向代理后页面上的js/css文件无法加载 location ~ \.php$ {proxy_pass http://127.0.0.1:8000;include naproxy.con ...

  5. java怎么通过坐标定位控件_[已解决] 可以定位到控件, 但每次执行 click () 方法会报空指针错误 java.lang.NullPointerException...

    问题描述: 正常启动 appium 服务, 在 eclipse 中右键 Run as TestNG Test 之后, apk 可以正常安装并启动, 但是总会在 btn.click();处报错, 错误为 ...

  6. eclipse中文乱码解决_已解决-解决IntelliJ IDEA控制台输出中文乱码问题

    作者:宜春 原文链接:https://zhuanlan.zhihu.com/p/94412052 IntelliJ IDEA 真的是一款很方便的Java开发工具,但是关于中文乱码这个问题我不得不吐槽, ...

  7. Eclipse之java虚拟机初始化失败问题已解决

    1.问题现象: 前段时间在用eclipse部署项目过程中出现java虚拟机初始化失败,如图: 版本是:eclipse-jee-helios-SR1-win32.zip JDK版本是:1.6.0_24 ...

  8. java字符乱码问题_怎么解决java中的字符乱码问题

    怎么解决java中的字符乱码问题 发布时间:2020-06-28 14:53:09 来源:亿速云 阅读:108 作者:Leah 怎么解决java中的字符乱码问题?相信很多没有经验的人对此束手无策,为此 ...

  9. 【已解决】Caused by: java.lang.ClassNotFoundException: com.sun.istack.Pool

    最近遇到一个报错,记录一下解决的过程: 报错: 22-03-18.10:16:33.718 [JSF-FileRegistry-Back-Load-2-T-1] ERROR FileRegistry ...

最新文章

  1. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 实序列的幅频特性偶对称 | 实序列相频特性奇对称 | 示例说明 )
  2. 构造函数初始化结构体
  3. Canvas实现文字粒子化,并且绕轴旋转(完善)
  4. 10款交互设计原型开发工具(转)
  5. graph slam tutorial :从推导到应用3
  6. 全局变量定义的时候左侧加了static_c语言中static 用法
  7. [CF920G]List Of Integers
  8. LibreOJ #6014. 「网络流 24 题」最长 k 可重区间集
  9. (十)洞悉linux下的Netfilteriptables:网络地址转换原理之SNAT
  10. 刘铁猛挨踢人感言:做一个高情商的程序员
  11. Xcode 使用手册之01 欢迎使用Xcode(Xcode中文文档手册)
  12. CAD2008 启动慢 卡住
  13. ios 获取相机胶卷_电影胶片相机的工作原理
  14. 网易2019年实习生招聘笔试题
  15. 【前端】用百度BAE和express部署自己的node后台
  16. 同一网段两个主机通信(交换机) 不同网段两个主机通信(路由器)
  17. php上传文件自动解压,PHP自动解压上传的rar文件
  18. 洛谷 P2404 自然数的拆分问题(搜索、保证顺序进行搜索)
  19. 2019 微信公开课 Pro 开幕:干货依旧满满,但张小龙去哪儿了?
  20. mysql数据库巡检工作内容_数据库巡检

热门文章

  1. 【转载】使用JQDATA获取数据并本地化(Mysql储存)
  2. java计算1-100阶乘之和
  3. java九九_java九九乘法表
  4. PCL 三维 CAD 模型 (obj、ply) 转点云 pcd 文件格式
  5. vue js时分秒计时器_Vue js框架的倒数计时器
  6. 3PAR 存储架构解析
  7. 使用rpm包及createrepo命令制作本地yum仓库
  8. 基于MATLAB Coder将matlab代码转换成C代码
  9. SCCB协议理解及实现
  10. XML相关案例(无广告视频)