汇编语言 - 这个块做了什么

时间:2015-12-28 19:01:32

标签: assembly x86 reverse-engineering

我对汇编语言非常陌生,我的朋友责成我研究加密数据包到他的游戏的dll。这是代码

635D1387  /. 55             PUSH EBP
635D1388  |. 8BEC           MOV EBP,ESP
635D138A  |. 837D 08 00     CMP DWORD PTR SS:[EBP+8],0
635D138E  |. 75 13          JNZ SHORT dom.635D13A3
635D1390  |. 837D 0C 00     CMP DWORD PTR SS:[EBP+C],0
635D1394  |. 75 0D          JNZ SHORT dom.635D13A3
635D1396  |. 837D 10 00     CMP DWORD PTR SS:[EBP+10],0
635D139A  |. 75 07          JNZ SHORT dom.635D13A3
635D139C  |. 33C0           XOR EAX,EAX
635D139E  |. 50             PUSH EAX
635D139F  |. 50             PUSH EAX
635D13A0  |. 50             PUSH EAX
635D13A1  |. EB 0F          JMP SHORT dom.635D13B2
635D13A3  |> 68 9ACB221E    PUSH 1E22CB9A
635D13A8  |. 68 438A8C12    PUSH 128C8A43
635D13AD  |. 68 F304951E    PUSH 1E9504F3
635D13B2  |> FF15 78E35E63  CALL DWORD PTR DS:[635EE378]
635D13B8  |. 5D             POP EBP
635D13B9  \. C2 0C00        RETN 0C

将非常感谢答案,并将极大地提高我的技能。非常感谢你。

1 个答案:

答案 0 :(得分:3)

它基本上是这样的:

foo(int x, int y, int z)
{
    if (x != 0 || y != 0 || z != 0)
    {
        bar(0x1e9504f3, 0x128c8a43, 0x1e22cb9a);
    } else {
        bar(0, 0, 0);
    }
}

这对你不太有帮助。