[原]第10天作业7
#include <stdio.h>#include <stdlib.h>
int test(void)
{
/*
B8 23 01 00 00 mov eax,123h
BB 20 D5 40 00 mov ebx,offset test+60h (0040d520)
FF E3 jmp ebx
*/
char a = {'\xb8', '\x23', '\x01', '\x00', '\x00', '\xbb',
'\x20', '\xd5', '\x40', '\x00', '\xff', '\xe3'} ;
int *p = (int *)a ;
int t;
__asm
{
pushad
mov eax, p
jmp eax
mov t, eax
popad
}
return t ;
}
int main(void)
{
int i ;
i = test() ;
// __asm
// {
// mov i, eax
// }
printf("%d\r\n", i) ;
return 0 ;
}
[ 本帖最后由 evilknight 于 2009-7-30 22:32 编辑 ] // 将这些十六进制数据作为无参函数运行一下,
// 并输出其十进制返回值B8 23 01 00 00 C3
#include <stdio.h>
#include <stdlib.h>
typedef int(* pfn)(void) ;
int main(void)
{
int i;
char ch[] = {'\xb8', '\x23', '\x01', '\x00', '\x00', '\xc3', '\x00'} ;
pfn p = (pfn)&ch;
i =p() ;
printf("%d\r\n", i) ;
return 0 ;
}
[ 本帖最后由 evilknight 于 2009-7-30 22:32 编辑 ]
bs
bs................顶
顶啊。。。。。。。。。。。 哈,测试的时候不记得改回来了!
页:
[1]