再贴一些技巧

2008年6月16日 in 技术文章

1. 遇到特征码定位在jmp指令上面的 构造替换 push xxxxx ret。
        
        举例: jmp xxxxx
        
    构造替换  push xxxxx
              ret


2. 遇到特征码定位在call指令上的。
          举例:
              call xxxxx
              
    构造替换: push @f
              jmp xxxxx
              @@:            

;@@的标号表示的是你jmp xxxx指令后面的内存地址。 @f也就是引用@@ 的标号,所以此时@f这里填写的就是jmp xxxxx指令后面的内存地址。。


3. 遇到特征码定位在ret上

      举例:  ret

  构造替换:
             jmp dword ptr [esp]



4. 遇到特征码定位在test eax, eax  je xxxx    or eax, eax, je xxxxx   cmp eax, 0  jexxxxxx

                   举例: test eax, eax
                         je        xxxxxx

        构造替换:         xchg eax, ecx
                         jecxz xxxxx


5. 遇到特征码定位在 push [xxxxxx]上的。

                 举例:push [xxxxx]
            
              构造:

       在其之前通过 xchg [xxxxxx], ebx
  然后用寄存器传参: push ebx


        最后在下面在通过xchg [xxxxxx], ebx 交换回来。



6. 把之前我教的数据段动态恢复和巧用算法加密结合起来。

前提是对汇编大家一定要有所了解,例如一些会员说金山杀的是配置信息上,你完全可以将其这些配置信息所处的地址的数据进行一层加密。或者你可以将其这些偏移所处的数据 通过xchg 交换。

dll注意下 要进行重定位

         call $+5      ;机器码是 E8 00000000     00000000是相对地址
     @@: pop ebx
         sub ebx, @b
        

下面你就可以通过[ebx+你的偏移]来进行变址寻址了。。 

 

相关日志

    发表评论: