首页
论坛
课程
招聘
用VC如何实现花指令
2005-3-20 22:03 23557

用VC如何实现花指令

2005-3-20 22:03
23557
在VC加入花指令,我在几年前就尝试使用了,一点心得,大家交流:
-----------------------------------------------------------
    1、首先,定义各种花指令的宏,可以单独放到一个.h文件中,也可以直接在程序的首部定义,我建议放到.h文件中。
       注意,所有转移标号和call的地址用相对地址符号$表示,以楼上的问题为例,格式如下:

#define _WJQ_USED_FLOWER  //此开关控制编译器是否使用花指令
//
//花指令定义(定义多少种,自己需要而定)
#ifndef _WJQ_USED_FLOWER
        #define __FLOWER_XX0        _asm nop
#else
#define __FLOWER_XX0 _asm \
{\
  _asm jz  $+5  /*本指令2 bytes len*/\
  _asm jnz $+3  /*本指令2 bytes len*/\
  _asm _emit 0e8h /*本指令1 bytes len*/\
  /*这里是要转移到的地址*/\
}
#endif

     2、根据上述格式,编辑好各种花指令,例如我编辑的10种为:
       __FLOWER_XX0
       __FLOWER_XX1
       __FLOWER_XX2
       .
       .
       .
      __FLOWER_XX9

     3、在VC中的使用方法:
     int  WJQ_Function(char* pStr,DWORD nIndex)
     {
     __FLOWER_XX0
          char buffer[200];
     __FLOWER_XX9
           /*
            buffer的赋值部分(略)
           */
     __FLOWER_XX7
          for(long i=0; i<100; i++)
         {
     __FLOWER_XX2
            pStr[i] = buffer[i];
     __FLOWER_XX5
         }
     __FLOWER_XX4
           return TRUE;
     __FLOWER_XX6
     }

    以上程序中,仅仅通过是否定义了_WJQ_USED_FLOWER来决定是否插入花指令。将 #define _WJQ_USED_FLOWER 注释掉,就可以无花指令调试程序,调试成功后,加入宏定义即可加入花指令。

                               Spring.W
                               2005.3.20

看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

收藏
点赞0
打赏
分享
最新回复 (16)
雪    币: 261
活跃值: 活跃值 (114)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
laoqian 活跃值 8 2005-3-21 09:37
2
0
花指令是否就是你们搞出来的啊,呵呵!有些复杂的花指令去除起来还真是麻烦阿。
雪    币: 220
活跃值: 活跃值 (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
萝卜 活跃值 1 2005-3-21 12:05
3
0
我害怕这个花指令。
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
clide2000 活跃值 7 2005-3-21 15:42
4
0
那要是在delphi中,要怎么样实现呢
雪    币: 111
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无奈无赖 活跃值 2005-3-21 15:46
5
0
最初由 clide2000 发布
那要是在delphi中,要怎么样实现呢


这个里面也能加吗?
雪    币: 199
活跃值: 活跃值 (30)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
Spring.W 活跃值 10 2005-3-21 19:58
6
0
哈哈。。懒人太多了,一群懒汉,把脑子用坏了怎么办?
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
clide2000 活跃值 7 2005-3-21 23:58
7
0
最初由 Spring.W 发布
哈哈。。懒人太多了,一群懒汉,把脑子用坏了怎么办?


言之有理啊,我试了下用
asm  db $74,$04,$75,$02,$e8,$03  end;这样的嵌入方式可以实现简单的花,可还没有尝试出复杂些的,难道只能靠数量吗?
雪    币: 1018
活跃值: 活跃值 (9934)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 活跃值 8 2005-3-22 08:23
8
0
雪    币: 200
活跃值: 活跃值 (17)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 活跃值 4 2005-3-22 12:50
9
0
全花了,还怎看。对我这种菜鸟还是别花好
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
you_known 活跃值 2005-3-22 13:48
10
0



言之有理啊,我试了下用
asm db $74,$04,$75,$02,$e8,$03 end;这样的嵌入方式可以实现简单的花,可还没有尝试出复杂些的,难道只能靠数量吗?

在Delphi中需要花的地方插入一段code,而且这段code可以任意变形:
asm
  jz @
  jnz @   
  db $e8  //这里到@之间可以插入任和混淆视觉的代码
@:
end;

实践一下,你会得到很多不同花指令组合。
雪    币: 194
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pwpwpw123 活跃值 2005-3-29 14:46
11
0
还不如变个花指令编译器,好的多(不过工程有些恐怖)
雪    币: 221
活跃值: 活跃值 (47)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
machoman 活跃值 1 2005-4-1 22:53
12
0
楼主,能把你的.h贴完全吗???只有一个花指令呀,其他的如何弄???
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
kyc 活跃值 19 2005-5-15 20:34
13
0
能否把头文件上传一下让我等菜鸟共享
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
阵雨 活跃值 2005-5-16 00:43
14
0
呵呵 ,来个花指令集锦不错
雪    币: 226
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
warcraft 活跃值 2005-5-16 10:47
15
0
把脑子用坏了怎么办?
雪    币: 19
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 活跃值 4 2005-5-16 12:15
16
0
学习
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wtkc 活跃值 2006-7-21 15:16
17
0
_asm jz        $+5       
_asm jnz        $+3       

00403A4B 0F 84 FF FF FF FF    je          00403A50
00403A51 0F 85 FD FF FF FF    jne         00403A54
00403A57 E8 90 C7 85 8C       call        8CC601EC

为什么我采用该方法后跳转不是按照短跳转编译,变成这个样子了?
游客
登录 | 注册 方可回帖
返回