git-svn: trunk@4144
aCaB authored on 2008/08/26 09:56:07... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Tue Aug 26 02:52:10 CEST 2008 (acab) |
|
2 |
+------------------------------------ |
|
3 |
+ * libclamav/disasm*; unit_tests/check_disasm: some fixes, work in progress |
|
4 |
+ |
|
1 | 5 |
Mon Aug 25 23:52:04 CEST 2008 (tk) |
2 | 6 |
---------------------------------- |
3 | 7 |
* drop support for Cygwin (due to broken ClamAV builds) |
... | ... |
@@ -361,6 +361,7 @@ static const char *mnemonic[] = { |
361 | 361 |
"loop", |
362 | 362 |
"loope", |
363 | 363 |
"loopne", |
364 |
+ "jecxz", |
|
364 | 365 |
"lsl", |
365 | 366 |
"lss", |
366 | 367 |
"ltr", |
... | ... |
@@ -857,7 +858,7 @@ static const struct OPCODES x86ops[2][256] = {{ |
857 | 857 |
PUSHOP(0xe0, ADDR_RELJ, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_LOOPNE), |
858 | 858 |
PUSHOP(0xe1, ADDR_RELJ, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_LOOPE), |
859 | 859 |
PUSHOP(0xe2, ADDR_RELJ, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_LOOP), |
860 |
- PUSHOP(0xe3, ADDR_RELJ, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_LOOPNE), |
|
860 |
+ PUSHOP(0xe3, ADDR_RELJ, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_JECXZ), |
|
861 | 861 |
PUSHOP(0xe4, ADDR_REG_EAX, SIZE_BYTE, ADDR_IMMED, SIZE_BYTE, OP_IN), |
862 | 862 |
PUSHOP(0xe5, ADDR_REG_EAX, SIZE_WD, ADDR_IMMED, SIZE_BYTE, OP_IN), |
863 | 863 |
PUSHOP(0xe6, ADDR_IMMED, SIZE_BYTE, ADDR_REG_EAX, SIZE_BYTE, OP_OUT), |
... | ... |
@@ -1709,7 +1710,7 @@ void disasmbuf(uint8_t *buff, unsigned int len, int fd) { |
1709 | 1709 |
switch(s.args[i].access) { |
1710 | 1710 |
case ACCESS_MEM: |
1711 | 1711 |
w.arg[i][2]=s.args[i].arg.marg.r1; |
1712 |
- w.arg[i][3]=s.args[i].arg.marg.r1; |
|
1712 |
+ w.arg[i][3]=s.args[i].arg.marg.r2; |
|
1713 | 1713 |
w.arg[i][4]=s.args[i].arg.marg.scale; |
1714 | 1714 |
w.arg[i][5]=0; |
1715 | 1715 |
cli_writeint32(&w.arg[i][6], s.args[i].arg.marg.disp); |
... | ... |
@@ -46,6 +46,61 @@ START_TEST (test_disasm_basic) { |
46 | 46 |
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; |
47 | 47 |
int fd = mkstemp(file); |
48 | 48 |
uint8_t buf[] = {0x33, 0xc0}; |
49 |
+/* uint8_t buf[] = { */ |
|
50 |
+/* /\* m00/rm000 - add [eax], al *\/ */ |
|
51 |
+/* 0x00, 0x00, */ |
|
52 |
+/* /\* m00/rm011 - add [ebx], edi *\/ */ |
|
53 |
+/* 0x01, 0x3b, */ |
|
54 |
+/* /\* m00/rm100/ss00/idx010/b100 - or [edx*1+esp], dh *\/ */ |
|
55 |
+/* 0x08, 0x34, 0x14, */ |
|
56 |
+/* /\* m00/rm100/ss00/idx100/b001 - or [0*1+ecx], edi *\/ */ |
|
57 |
+/* 0x09, 0x3c, 0x21, */ |
|
58 |
+/* /\* m00/rm100/ss00/idx010/b101 - adc [edx*1+0x42614361], ah *\/ */ |
|
59 |
+/* 0x10, 0x24, 0x15, 0x61, 0x43, 0x61, 0x42, */ |
|
60 |
+/* /\* m00/rm100/ss10/idx111/b110 - adc [edi*4+esi], ecx *\/ */ |
|
61 |
+/* 0x11, 0x0c, 0xbe, */ |
|
62 |
+/* /\* m00/rm101 - sbb [0xaaccaabb], dl *\/ */ |
|
63 |
+/* 0x18, 0x15, 0xbb, 0xaa, 0xcc, 0xaa, */ |
|
64 |
+/* /\* m01/rm001 - sbb [ecx+0xffffffff], esp *\/ */ |
|
65 |
+/* 0x19, 0x61, 0xff, */ |
|
66 |
+/* /\* m10/rm100/ss01/idx110/b010 - and [esi*2+edx+0x0b0a0c0a], ch *\/ */ |
|
67 |
+/* 0x20, 0xac, 0x72, 0x0a, 0x0c, 0x0a, 0x0b, */ |
|
68 |
+/* /\* m10/rm100/ss11/idx011/b101 - and [eax*8+ebp+0xabacabac], ebx *\/ */ |
|
69 |
+/* 0x21, 0x9c, 0xc5, 0xac, 0xab, 0xac, 0xab, */ |
|
70 |
+/* /\* m11/rm100 - sub ah, dh *\/ */ |
|
71 |
+/* 0x28, 0xf4, */ |
|
72 |
+/* /\* m11/rm101 - sub ebp, edx *\/ */ |
|
73 |
+/* 0x29, 0xd5, */ |
|
74 |
+/* /\* mov al, 17 *\/ */ |
|
75 |
+/* 0x04, 0x17, */ |
|
76 |
+/* /\* pop es *\/ */ |
|
77 |
+/* 0x07, */ |
|
78 |
+/* /\* push cs *\/ */ |
|
79 |
+/* 0x0e, */ |
|
80 |
+/* /\* adc eax, 0x37333331 *\/ */ |
|
81 |
+/* 0x15, 0x31, 0x33, 0x33, 0x37, */ |
|
82 |
+/* /\* sbb ax, 3713 *\/ */ |
|
83 |
+/* 0x66, 0x1d, 0x13, 0x37, */ |
|
84 |
+/* /\* inc esi *\/ */ |
|
85 |
+/* 0x46, */ |
|
86 |
+/* /\* jnc +0x31 *\/ */ |
|
87 |
+/* 0x73, 0x31, */ |
|
88 |
+/* /\* pop [edx] *\/ */ |
|
89 |
+/* 0x8f, 0x02, */ |
|
90 |
+/* /\* nop *\/ */ |
|
91 |
+/* 0x90, */ |
|
92 |
+/* /\* call far 1122:33445566 *\/ */ |
|
93 |
+/* 0x9a, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, */ |
|
94 |
+/* /\* mov [11223344], eax *\/ */ |
|
95 |
+/* 0xa2, 0x44, 0x33, 0x22, 0x11, */ |
|
96 |
+/* /\* enter 1122, 33 *\/ */ |
|
97 |
+/* 0xc8, 0x22, 0x11, 0x33, */ |
|
98 |
+/* /\* rcl [ecx], 1 *\/ */ |
|
99 |
+/* 0xd0, 0x11, */ |
|
100 |
+ |
|
101 |
+/* /\* WIP... *\/ */ |
|
102 |
+ |
|
103 |
+/* }; */ |
|
49 | 104 |
off_t *d; |
50 | 105 |
off_t size; |
51 | 106 |
|