这段汇编代码啥意思,用高级语言怎么表示?
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 |
这段代码的意思是:
先将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-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:20 编辑
浮点 字面意思
可以理解为加减乘除运算 0×Ret 发表于 2023-2-2 19:18
浮点 字面意思
是往那个内存地址里写入0吗? aゞ烛火 发表于 2023-2-2 19:42
可以理解为加减乘除运算
往那个指定的内存地址写入0吗 吴涛 发表于 2023-2-2 19:50
往那个指定的内存地址写入0吗
0是栈序号(也许?了解下浮点栈吧 ida看下不就知道了{:6_196:} 本帖最后由 吴涛 于 2023-2-3 17:05 编辑
lies 发表于 2023-2-3 15:44
这段代码的意思是:
先将ds:处的dword压入到st(0)栈顶,
然后将st(0)栈顶处的数据弹出到ebp-0xC ...
带神,帮帮忙{:5_118:}看看能不能逆向一下一个和谐大漠插件的dll(没加壳),看看它是做了什么操作,我也在x32dbg里找到了关键的地方,就是帖子里那个,不知道它破解是做了什么操作
页:
[1]