科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道扭曲变换加密(目前防止软件被破解最好的方法)

扭曲变换加密(目前防止软件被破解最好的方法)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们经常考虑,一个可执行文件,怎么样加密才能安全呢?一般用的手段,是加壳。加壳工具的工作原理,就是把可执行文件的代码与数据都进行加密变换,作为数据存放。生成的目标文件入口代码是加壳软件准备好的防跟踪代码。

2007年10月23日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

  三,扭曲变换器

    有了思想,就开始动手编码。原以为OBJ文件格式是有文档的,工程进度应该很快。没想到其中还是有很多内容需要考虑。每每说这是最后一个问题,解决了就没事了,却总是后延。前前后后居然写了差不多半年时间。主要遇到的技术问题:

  * 汇编器ML会把所有的代码放到一个段中,这是不可以的。CL则通常是一个函数一个段。

  * 汇编器ML不能生成 COMDAT 段。尽管文档中讲它支持COMMON,但加了这个关键字无效果。

  * 汇编器ML不支持 WEAKEXTERN

  * 汇编器ML只支持 defaultlib 这一个 drectve 关键字,其它 export, include 等关键字不支持.总之,CL编译的OBJ其中有很多属性是ML无法生成的。微软的masm真的该升级了。还有一些问题:

  * 分不清代码与数据。数据段中肯定是数据,但代码段中却有可能不是代码,是数据。这时如果你试图反汇编它,就会出错。

  * 不管怎样,这些问题都一一解决了(别问我怎么做的)。采用的代码扭曲方法:* 用 JMP 把代码打乱。这已经不是什么新鲜的招数了,但它依然有效。* 用 JMP 把多个函数缠绕在一起。这样可以让分析者找不到函数从什么地方开始,到什么地方结束。* 把 call 改掉。破解者对 call 是极敏感的,这举可以让他找不到一个 call。比如,我可以把call sub1

  改为:

  mov eax, offset sub1 + 3

  push offset @1

  sub eax, 3

  jmp eax

  @1:

  * 把 ret 改掉。破解者对 ret 是极敏感的,这举可以让他找不到一个 ret。比如,我可以把ret写作

  push ecx

  mov ecx, [esp+4]

  add esp,8

  jmp ecx

  * 改条件跳。条件跳也是极敏感的指令,比如我们可以把

  cmp reg1, reg2

  jge L_DST

  L_NEXT:

  写作:

  push eax

  mov eax, reg1

  sub eax, reg2

  shr eax, 1fh

  neg eax

  and eax, L2 - L1

  add eax, L1

  jmp eax

  L1:

  pop eax

  jmp L_DST

  L2:

  pop eax

  L_NEXT:

  再看这个,你能看懂是什么意思吗

  push offset @@L - offset L_3 + 23h

  jmp L_1

  L_2:

  jz L_3

  ret 4

  L_3:

  add dword ptr [esp+4], offset L_3 - 23h

  add esp,4

  retL_1:

  call L_2

  ...

  这里出现了call和ret,但又不是一般所期望的那种。这里的call不代表你发现了一个函数调用。

  这里的ret不代表是一个函数的结束。* 使用堆栈代替寄存器。比如:

  MOV EAX, DWORD PTR [ECX+0AD8h]

  PUSH EAX

  MOV ECX, DWORD PTR [EAX]

  可以写作:

  PUSH EAX

  PUSH ECX

  MOV EAX, DWORD PTR [ESP]

  ADD EAX, 0AD8h

  MOV EAX, DWORD PTR [EAX]

  MOV DWORD PTR [ESP+04h], EAX

  PUSH DWORD PTR [ESP+04h]

  MOV EAX, DWORD PTR [ESP]

  MOV DWORD PTR [ESP+08h], EAX

  MOV EAX, DWORD PTR [ESP]

  MOV EAX, DWORD PTR [EAX]

  MOV DWORD PTR [ESP+04h], EAX

  MOV EAX, DWORD PTR [ESP]

  MOV ECX, DWORD PTR [ESP+04h]

  ADD ESP, 08h

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章