吴涛 发表于 2023-2-2 18:57

这段汇编代码啥意思,用高级语言怎么表示?

00E221A4                     | A3 00D7F300                        | mov dword ptr ds:,eax                |
00E221A9                     | 833D 00D7F300 00                   | cmp dword ptr ds:,0x0                |
00E221B0                     | 0F8E 27000000                      | jle xdyl.E221DD                              | 未执行转移
00E221B6                     | DB05 00D7F300                      | fild st(0),dword ptr ds:             | 什么操作
00E221BC                     | DD5D F4                            | fstp qword ptr ss:,st(0)            |
00E221BF                     | DD45 F4                            | fld st(0),qword ptr ss:               |
00E221C2                     | DC0D C230F000                      | fmul st(0),qword ptr ds:             |
00E221C8                     | DD5D EC                            | fstp qword ptr ss:,st(0)             |
00E221CB                     | DD45 EC                            | fld st(0),qword ptr ss:            |
00E221CE                     | E8 43FAFFFF                        | call xdyl.E21C16                               |
00E221D3                     | A3 00D7F300                        | mov dword ptr ds:,eax                |
00E221D8                     | E9 1C000000                        | jmp xdyl.E221F9                              |
00E221DD                     | C745 F8 00000000                   | mov dword ptr ss:,0x0               |
00E221E4                     | 6A 00                              | push 0x0                                       |
00E221E6                     | FF75 F8                            | push dword ptr ss:                  |
00E221E9                     | 68 02000000                        | push 0x2                                       |
00E221EE                     | E8 FDFAFFFF                        | call <xdyl.sub_E21CF0>                         |
00E221F3                     | 59                                 | pop ecx                                        |
00E221F4                     | E9 72FFFFFF                        | jmp xdyl.E2216B                              |
00E221F9                     | 83C4 04                            | add esp,0x4                                    |
00E221FC                     | 833D 00D7F300 00                   | cmp dword ptr ds:,0x0                |
00E22203                     | 0F85 3A000000                      | jne xdyl.E22243                              | 执行转移
00E22209                     | 6A 01                              | push 0x1                                       |
00E2220B                     | 68 64000000                        | push 0x64                                    |
00E22210                     | 68 32000000                        | push 0x32                                    |
00E22215                     | E8 D6FAFFFF                        | call <xdyl.sub_E21CF0>                         |
00E2221A                     | 68 010100A0                        | push 0xA0000101                              |
00E2221F                     | 6A 00                              | push 0x0                                       |
00E22221                     | 68 CA30F000                        | push xdyl.F030CA                               |
00E22226                     | 68 01000000                        | push 0x1                                       |
00E2222B                     | BB 60D2E200                        | mov ebx,<xdyl.sub_E2D260>                      |
00E22230                     | E8 3F9B0000                        | call <xdyl.sub_E2BD74>                         |
00E22235                     | 83C4 10                            | add esp,0x10                                 |
00E22238                     | 8945 F8                            | mov dword ptr ss:,eax               |
00E2223B                     | 8B45 F8                            | mov eax,dword ptr ss:               |
00E2223E                     | E9 C80A0000                        | jmp xdyl.E22D0B                              |
00E22243                     | DB05 00D7F300                      | fild st(0),dword ptr ds:             | 什么操作
00E22249                     | DD5D F4                            | fstp qword ptr ss:,st(0)            |
00E2224C                     | DD45 F4                            | fld st(0),qword ptr ss:               |
00E2224F                     | DC35 C230F000                      | fdiv st(0),qword ptr ds:             |
00E22255                     | DD5D EC                            | fstp qword ptr ss:,st(0)             |
00E22258                     | DD45 EC                            | fld st(0),qword ptr ss:            |
00E2225B                     | DC25 F030F000                      | fsub st(0),qword ptr ds:             |
00E22261                     | D9E4                               | ftst                                           |
00E22263                     | DFE0                               | fnstsw ax                                    |
00E22265                     | F6C4 01                            | test ah,0x1                                    |
00E22268                     | 74 02                              | je xdyl.E2226C                                 |
00E2226A                     | D9E0                               | fchs                                           |
00E2226C                     | DC1D F830F000                      | fcomp st(0),qword ptr ds:            |
00E22272                     | DFE0                               | fnstsw ax                                    |
00E22274                     | F6C4 41                            | test ah,0x41                                 |
00E22277                     | 0F84 44000000                      | je xdyl.E222C1                                 |


lies 发表于 2023-2-2 18:57

这段代码的意思是:
先将ds:处的dword压入到st(0)栈顶,
然后将st(0)栈顶处的数据弹出到ebp-0xC处,
将ebp-0xC处的数据压入到st(0)栈顶,
以及将ds:处的qword除以st(0)栈顶的数据,
然后再将st(0)栈顶的数据弹出到ebp-0x14处,
然后让st(0)栈顶减去ds:之后再进行浮点测试,
并将结果保存在ax寄存器中,
测试ah高8位是否为1,
如果是则跳转到xdyl.E2226C,
如果不是则反转符号,
再比较st(0)栈顶的数据和ds:处的qword的大小,
并将结果保存在ax寄存器中,
测试ah高8位是否为41,
如果是则跳转到xdyl.E222C1

吴涛 发表于 2023-2-2 18:59

本帖最后由 吴涛 于 2023-2-4 20:17 编辑

fild st(0),dword ptr ds:             | 什么操作
fstp qword ptr ss:,st(0)            |
fld st(0),qword ptr ss:               |
fdiv st(0),qword ptr ds:             |
fstp qword ptr ss:,st(0)             |
fld st(0),qword ptr ss:            |
fsub st(0),qword ptr ds:             |
ftst                                           |
fnstsw ax                                    |
test ah,0x1                                    |
je xdyl.E2226C                                 |
fchs                                           |
fcomp st(0),qword ptr ds:

主要就是这段

0×Ret 发表于 2023-2-2 19:18

本帖最后由 0×Ret 于 2023-2-2 19:20 编辑

浮点 字面意思

aゞ烛火 发表于 2023-2-2 19:42

可以理解为加减乘除运算

吴涛 发表于 2023-2-2 19:43

0×Ret 发表于 2023-2-2 19:18
浮点 字面意思

是往那个内存地址里写入0吗?

吴涛 发表于 2023-2-2 19:50

aゞ烛火 发表于 2023-2-2 19:42
可以理解为加减乘除运算

往那个指定的内存地址写入0吗

亿落雪 发表于 2023-2-2 21:42

吴涛 发表于 2023-2-2 19:50
往那个指定的内存地址写入0吗

0是栈序号(也许?了解下浮点栈吧

hou 发表于 2023-2-3 10:32

ida看下不就知道了{:6_196:}

吴涛 发表于 2023-2-3 17:02

本帖最后由 吴涛 于 2023-2-3 17:05 编辑

lies 发表于 2023-2-3 15:44
这段代码的意思是:
先将ds:处的dword压入到st(0)栈顶,
然后将st(0)栈顶处的数据弹出到ebp-0xC ...
带神,帮帮忙{:5_118:}看看能不能逆向一下一个和谐大漠插件的dll(没加壳),看看它是做了什么操作,我也在x32dbg里找到了关键的地方,就是帖子里那个,不知道它破解是做了什么操作
页: [1]
查看完整版本: 这段汇编代码啥意思,用高级语言怎么表示?