wow7jiao 发表于 2018-6-24 10:51:55

请版主发一下源码

本帖最后由 wow7jiao 于 2018-6-24 11:06 编辑

下面是翻遍,我尝试逐条翻译,有错误请前辈指点

int main(void)
{
010BF840push      ebp//备份堆栈指针入堆栈
010BF841mov         ebp,esp//堆栈指针复制给备份堆栈指针
010BF843sub         esp,0D8h//为函数申请一段空间
010BF849push      ebx//
010BF84Apush      esi//
010BF84Bpush      edi//寄存器压栈,保留现场
010BF84Clea         edi,//这是减负数吗,然后把值给edi
010BF852mov         ecx,36h//计数器54
010BF857mov         eax,0CCCCCCCCh//这里是int3吗?不用设置cs ip吗?
010BF85Crep stos    dword ptr es://rep指令的目的是重复其上面的指令.ECX的值是重复的次数.。。STOS指令的作用是将eax中的值(eax=0CCCCCCCCh,这里拷贝54次eax有什么用?)拷贝到ES:EDI指向的地址.edi会同步减小。
         int a = 100;
010BF85Emov         dword ptr ,64h//这里是把100放进堆栈
         int *p = &a;
010BF865lea         eax,//把备份指针的偏移值给eax
010BF868mov         dword ptr ,eax//把偏移值在放进向上20字节堆栈空间?

         printf("%d\n", *p);
010BF86Bmov         eax,dword ptr
010BF86Emov         ecx,dword ptr
010BF870push      ecx
010BF871push      1153E50h
010BF876call      010BBD9B//段间转移,pushcs,puship,去010BBD9B地址。
010BF87Badd         esp,8
         return 0;
010BF87Exor         eax,eax//异或,eax清0
}

人造人 发表于 2018-6-24 10:51:56

wow7jiao 发表于 2018-6-24 14:59
请人造人老师发布一下,您发的反汇编对应的源码是什么?

#include <stdio.h>

int main(void)
{
        int a = 100;
        int *p = &a;
        printf("%d\n", *p);

        return 0;
}

人造人 发表于 2018-6-24 13:47:30

这个翻译有好多问题
先把反汇编发完整
从main函数开始,到main函数返回(ret 指令)

wow7jiao 发表于 2018-6-24 14:08:31

人造人 发表于 2018-6-24 13:47
这个翻译有好多问题
先把反汇编发完整
从main函数开始,到main函数返回(ret 指令)

版主,这就是你发的啊
http://bbs.fishc.com/thread-117286-1-1.html

我没看懂,所以尝试翻译下{:5_97:}

人造人 发表于 2018-6-24 14:11:31

wow7jiao 发表于 2018-6-24 14:08
版主,这就是你发的啊
http://bbs.fishc.com/thread-117286-1-1.html



我不是版主^_^

wow7jiao 发表于 2018-6-24 14:40:27

人造人 发表于 2018-6-24 14:11
我不是版主^_^

http://bbs.fishc.com/thread-83878-1-1.html

我记得你通过了

人造人 发表于 2018-6-24 14:41:16

wow7jiao 发表于 2018-6-24 14:40
http://bbs.fishc.com/thread-83878-1-1.html

我记得你通过了

现在不是了
^_^

wow7jiao 发表于 2018-6-24 14:59:17

人造人 发表于 2018-6-24 14:41
现在不是了
^_^

请人造人老师发布一下,您发的反汇编对应的源码是什么?
页: [1]
查看完整版本: 请版主发一下源码