[前几天都是算法啥的]来个和汇编有关的有关问题吧【欢迎赵老师莅临指导】

[前几天都是算法啥的]来个和汇编有关的问题吧【欢迎赵老师莅临指导】

void func(void* bytes, int len)
{
  char a[8] = {};
  memcpy(a, bytes, len);

}

一看就知道了,len如果过长,栈就被溢出了。没关系,这也是个题目。
主要是刚才发现赵老师也活跃在这里,于是就请教一下吧。【刚才有人问中文字符串匹配,赵老师发了一段strstr的汇编实现】

好吧,赵老师,和各位童鞋,哪位能写一段bytes of shellcode, 当函数返回时,弹出个MessageBox即可。

上面随便写点什么,比如说"Hello Teacher Zhao"什么的。

Go Go Go。。。赵老师,你汇编这么好,希望你第一个啊。~

------解决方案--------------------
我们就不凑热闹了,顶起!
------解决方案--------------------
友情围观~~

或许我应该去开个赌局,赌赵教主能否写出来~~
------解决方案--------------------
搬板凳,等赵老师。
------解决方案--------------------
赵老师是LZ尊贵的嘉宾啊,坐等。。。
------解决方案--------------------
以前某人的:
C/C++ code
char hello[] = {
    0xE9,  0xC5,  0x00,  0x00,  0x00,  0x5A,  0x33,  0xC9,  0x64,  0x8B,  0x35, 
        0x30,  0x00,  0x00,  0x00,  0x8B,  0x76,  0x0C,  0x8B,  0x76,  0x1C,  0x8B, 
        0x46,  0x08,  0x8B,  0x7E,  0x20,  0x8B,  0x36,  0x38,  0x4F,  0x18,  0x75,  
        0xF3,  0x50,  0x52,  0x6A,  0x0C,  0xE8,  0x2C,  0x00,  0x00,  0x00,  0x5B,  
        0x83,  0xC3,  0x0D,  0x53,  0xFF,  0xD0,  0x83,  0xC3,  0x07,  0x53,  0x6A,  
        0x0B,  0xE8,  0x1A,  0x00,  0x00,  0x00,  0x5B,  0x83,  0xC3,  0x18,  0x6A,  
        0x00,  0x53,  0x53,  0x6A,  0x00,  0xFF,  0xD0,  0x58,  0x83,  0xEB,  0x0C,  
        0x53,  0x6A,  0x0B,  0xE8,  0x02,  0x00,  0x00,  0x00,  0xFF,  0xD0,  0x8B,  
        0xD8,  0x83,  0xC0,  0x3C,  0x8B,  0x00,  0x03,  0xC3,  0x81,  0x38,  0x50,  
        0x45,  0x00,  0x00,  0x75,  0x5B,  0x8B,  0x40,  0x78,  0x03,  0xC3,  0x50, 
        0x8B,  0xC8,  0x8B,  0x49,  0x14,  0x8B,  0x40,  0x20,  0x03,  0xC3,  0x55, 
        0x8B,  0xE8,  0x33,  0xD2,  0x51,  0x8B,  0x00,  0x03,  0xC3,  0x8B,  0xF8, 
        0x8B,  0x74,  0x24,  0x14,  0x8B,  0x4C,  0x24,  0x10,  0xFC,  0xF3,  0xA6, 
        0x75,  0x29,  0x83,  0xC4,  0x04,  0x8B,  0x44,  0x24,  0x04,  0x8B,  0x40, 
        0x24,  0x03,  0xC3,  0xD1,  0xE2,  0x03,  0xC2,  0x33,  0xD2,  0x66,  0x8B,  
        0x10,  0x8B,  0x44,  0x24,  0x04,  0x8B,  0x40,  0x1C,  0x03,  0xC3,  0xC1, 
        0xE2,  0x02,  0x03,  0xC2,  0x8B,  0x00,  0x03,  0xC3,  0xEB,  0x0B,  0x42, 
        0x83,  0xC5,  0x04,  0x8B,  0xC5,  0x59,  0xE2,  0xBA,  0x33,  0xC0,  0x5D, 
        0x59,  0xC2,  0x04,  0x00,  0xE8,  0x36,  0xFF,  0xFF,  0xFF,  0x4C,  0x6F, 
        0x61,  0x64,  0x4C,  0x69,  0x62,  0x72,  0x61,  0x72,  0x79,  0x41,  0x00, 
        0x75,  0x73,  0x65,  0x72,  0x33,  0x32,  0x00,  0x4D,  0x65,  0x73,  0x73, 
        0x61,  0x67,  0x65,  0x42,  0x6F,  0x78,  0x41,  0x00,  0x45,  0x78,  0x69, 
        0x74,  0x50,  0x72,  0x6F,  0x63,  0x65,  0x73,  0x73,  0x00,  0x48,  0x65,
        0x6C,  0x6C,  0x6F,  0x20,  0x57,  0x6F,  0x72,  0x6C,  0x64,   0x00};
    
    int main(int argc, char* argv[])
    {
        ((void(_stdcall*)())&hello[0])();
        return 0;
}

------解决方案--------------------
看热闹, 这个要指定编译器,操作系统版本的吧, 最好是提供编译好的binary...
等 linux / win7 x64 版本...
------解决方案--------------------
赵教主又遁了...
------解决方案--------------------
貌似赵教主又露面了,但是他依然假装没看到你的贴~~
------解决方案--------------------
来帮忙顶一下, 坐等赵老师.
------解决方案--------------------
唉,你们就别调侃赵大师了吧,偶现在只盼谁在网上放个答案,好让赵大师马上搜索出来,再来表演复制粘贴大法.........

不过,偶现在算是想通了,其实童鞋们老批判赵大师复制粘贴是不对的!虽然赵大师的复制粘贴似文非文、似屁非屁,看起来总是那么飘渺无垠,但相对于赵大师那些发自肺腑的“真知灼见”,却也算高深莫测了。所谓两权相害取其轻,赵大师的复制粘贴大法倒也成了好事了........