能力值:
( LV13,RANK:283 )
|
-
-
2 楼
文件解析及加壳过程可以用java写,壳代码还是用c写吧 ,建议还是全c
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
littlewisp
文件解析及加壳过程可以用java写,壳代码还是用c写吧 ,建议还是全c & ...
谢谢指导,我觉得在这个问题上我还是放弃java吧
|
能力值:
( LV13,RANK:283 )
|
-
-
4 楼
直接全C多好,为了使用java而使用吗
|
能力值:
( LV13,RANK:810 )
|
-
-
5 楼
这个问题就需要来谈谈壳的架构问题了。 壳的三大架构 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调用这个模块。 架构就这样了,省下的就是动手操作了~祝君好运~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
Anskya
这个问题就需要来谈谈壳的架构问题了。
壳的三大架构
1.最早的壳几乎都是virus演化来的,大部分都是汇编直接写的。
好处就是直接可以把汇编代码复制出来当作壳的loader代码添加(感染)到程序 ...
多谢指点,已经开始学习C++了
|
|
|