日志
特征码免杀经验谈
2011-11-01 15:12
1、定位在cmp或test后的判断跳转,je、jz如此之类的...
遇到这样的,我一般都会把它们改成jmp就能过,当然也要看看上下代码的意思,不然可能出错...个人认为这样修改的效果还是不错 的.. 2、定位在跳转后的地址,如je xxxxxxxx ,jmp xxxxxxxx 之类的xxxxxxxx上... 一般遇到是判断跳转的je,jnz的...按照第一个方法把跳转符改改就能过...如把je改成jmp...遇到是jmp xxxxxxxx的,就试试看下 面有没有空 位构造下push xxxxxxxx ret 或者可以把jmp xxxxxxxx ,用跳转转移到其它地方... 3、定位在call eax之类上... 把它改成push eax或其它... 4、定位在call上的... 先跟进call后面的地址看看,因为有时候那里往上拉一句就可能会有NOP之类的语句,那么我们把call后面的地址向前移一位就可以 过... 如果没有NOP,我们可以用跳转转移... 5、定位在OR或者XOR上... 把OR改XOR或者XOR改OR... 6、定位在mov语句上,如MOV DWORD PTR SS:[ESP+14],ESI... 我们可以把它改成mov esp,esi add esp,14 7、定位在cmp语句,如cmp eax,esp jnz xxxxxxxx 那么遇到这样的,我们可以把这两句NOP掉,然后加上jmp xxxxxxxx ,这里意思就是我们不要那个比较,把代码直接跳到xxxxxxxx上 运行.... 遇到test 这样的也可以试试这个方法... 8、定位在字符串上,但是不能用改大小写的方法修改,修改就出错... 例如pcshare有一个定位在“%s%s%s”上的...我们可以首先用C32把“%s%s%s”向前移一位,然后用OD载入,右键,超级字符串参考 , 查找ASCII,然后找到所有的“s%s%s”,由于我们向前移了一位,所以显示的应该是“s%s%s”,然后双击来一个个修改...双击后会 发现, 对应的语句会有一个地址,我们把它改掉,向前一位,如4AD05168就改成4AD05167,接着同样方法继续改其它有“s%s%s”的... 这个方法通用字符串的修改... 总结:上面的只不过是我在免杀时的一些经验...实际免杀还需要读懂上下代码,实际分析,并不代表按照上面这样改就一定可以... 做人要灵活, 方法都是自己悟出来的,没什么完美的通用方法...自己的免杀方法才是最好的~ 特征码修改总结2~ 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+你的偏移]来进行变址寻址了。。 如果觉得本文写得有什么错误或不对,请各位提出啊~! |
下一篇: 几个恶心的批处理
上一篇: 文件免杀之文件特征码修改五大法宝