首页
社区
课程
招聘
[求助]VC++最快速度方式编译的ASM代码规律
发表于: 2007-4-8 14:58 5871

[求助]VC++最快速度方式编译的ASM代码规律

2007-4-8 14:58
5871
只要在RETURN后面加入下面语句
        _asm
        {
               
        }
ASM可以插入也可以不插入,只要有这个描述符(如果没有,则ret后面可能紧接着其他函数。最小大小的方式编译也是紧接其他函数),编译后的函数末尾便会有下面特征:

0040106B    50              push    eax
0040106C    C705 E8AC4000 0>mov     dword ptr [40ACE8], 0A           ; 请输入加数\n
00401076    FF15 C4704000   call    dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
0040107C    B0 01           mov     al, 1
0040107E    5D              pop     ebp
0040107F    C3              retn
00401080    32C0            xor     al, al
00401082    5D              pop     ebp
00401083    C3              retn
00401084    90              nop
00401085    90              nop                                    
00401086    90              nop
00401087    90              nop
00401088    90              nop
00401089    90              nop
0040108A    90              nop
0040108B    90              nop

也就是说可以通过c3 9090909090作为特征码识别函数尾部

我用的是VC++ 6.0(sp6)

问题是,该技巧是否在其他版本中有效

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
我一般用一个mov,eax 0x11111111
作为标志
或者_emit植入指令
2007-4-8 15:26
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
3
不过你可以看看在Kernel32。dll
也就是说微软的内部编译器和VC8  一般是用INT3
2007-4-8 15:27
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
翻译版antiantidump那篇文章,操作系统是WIN 2K以上的,就是以RET和后面的NOP作为函数尾的特征HOOK返回值的

INT3我在DEBUG模式和最小大小的模式见过

我希望通过特征,直接定位整函数的头和尾而不使用指令长度计算

可是在函数尾部插入的ASM在POP EBP和RET的前面。。。另外一个麻烦的地方便是那些不可能到达的代码在RELEASE编译模式中会被去掉。。。例如在RETURN后面插入ASM

看来加密单个函数最好的方法还是鸡蛋壳上次转载那篇,添加一个CODE段放被加密函数
2007-4-8 16:45
0
游客
登录 | 注册 方可回帖
返回
//