首页
社区
课程
招聘
[代码之美]自主命题-空指令生成演示
2008-9-29 08:26 14578

[代码之美]自主命题-空指令生成演示

2008-9-29 08:26
14578
发一篇绿叶衬托一下大家。希望能再次获得鼓励的幸运的参与大奖。
早就想写这个空指令生成模块,以用于vm生成器中,借这个机会把这个想法实现。
不是美丽的代码,只是参与一下,匆忙写就,还有很多不满意的地方,比如数据结构等,借此机会希望高手指点下。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
nkspark 3 2008-10-1 00:13
2
0
如果完全不考虑维持寄存器的值,应该没有问题。

如果要考虑维持寄存器的值,就要考虑操作是否满足交换律和结合律。
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2008-10-4 19:18
3
0
维持了寄存器数值,所有指令组合等同于nop指令.
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2008-10-4 19:34
4
0
eflag不等同于nop
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2008-10-4 22:41
5
0
eflag确实不能等同.使用前后要保护和恢复一下flag.
在vm下,或许可以不考虑这个寄存器。
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2008-10-4 22:42
6
0
为什么不考虑?
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2008-10-4 22:51
7
0
假使vm中不再用到eflag.
如vm里的vm_test,vm_cmp等指令的实现,不再依据eflag.就不考虑它了.
******
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
nkspark 3 2008-10-4 23:30
8
0
我刚开始理解错了,以为每组指令生成后是每条随机插入的队列。

又看了一下代码, 按组插是没问题的。挺好。
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2008-10-4 23:33
9
0
狼 - 哈姆太朗 - 狼 - 哈姆太朗 - 狼 - 哈姆太朗 - 狼 - 哈姆太朗
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2008-10-6 12:25
10
0
学习 +  期待
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2009-2-28 16:14
11
0
才发现少个头文件。。。
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-2-28 19:55
12
0
//NOP_generator Module (Demo)
//ShellWolf
//2008.09.28 ver 0.0.0.1

#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>

void * buff;                //À¬»øÖ¸Áî´æ·Å¿Õ¼äÖ¸Õë
int  Deep=4096;                //µÝ¹éÉî¶È£¬¾ö¶¨À¬»øÖ¸Áî×éºÏµÄ×ÜÊý
WORD  offset=0x0000;//´æ´¢¿Õ¼äµÄÆ«ÒƵØÖ·

//buff
#define Buff_64K                1024*64
#define        buffptr(off)        ((BYTE *)buff+off)
//rand
#define rand_WORD                ((rand()+rand())&0xffff)
#define rand_REG                (rand()%6+1)
#define rand_32                        (rand()%31+1)
//mnemonic
#define M_NONE  0x00
#define PUSH        0x01
#define POP                0x02
#define PUSHF        0x03
#define POPF        0x04
#define PUSHAD        0x05
#define POPAD        0x06
#define INC                0x07
#define DEC                0x08
#define ADD                0x09
#define SUB                0x0a
#define ROL                0x0b
#define ROR                0x0c
#define NOT                0x0d
#define XOR                0x0e
#define NEG                0x0f
#define XCHG        0x10
#define NOP                0x11
//reg32
#define EAX                0x01
#define EBX                0x02
#define ECX                0x03
#define EDX                0x04
#define ESI                0x05
#define EDI                0x06
#define EBP                0x07
#define ESP                0x08
//reg16
#define AX                0x11
#define BX                0x12
#define CX                0x13
#define DX                0x14
#define SI                0x15
#define DI                0x16
#define BP                0x17
#define SP                0x18
//operand type
#define T_NONE  0x00
#define T_REG   0x01
#define T_IMM_7FFF  0x02//0-0x7fff
#define T_IMM_1F  0x03//1-31

#define rol(a,b) ((a<<b)|(a>>(32-b)))

#define Distribution 0x01//0 ÏßÐÔ£¬1 Èý´Î·½³Ì

struct Operand//²Ù×÷Êý
{
        BYTE type;
        DWORD val;
};

struct Instruction//Ö¸Áî
{
        BYTE mnemonic;
        struct Operand op[2];
        WORD nextptr;
};

int size_Instruction=sizeof(Instruction);
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
Nooby 5 2009-2-28 20:05
13
0
无法学习,只能膜拜。
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-2-28 20:34
14
0
这是什么东东?
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-2-28 21:54
15
0
这个是生产垃圾指令的垃圾代码。
雪    币: 83429
活跃值: (198485)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2009-3-2 02:42
16
0
Nooby, это произошло в зарубежных странах, слышал, ваше имя.
游客
登录 | 注册 方可回帖
返回