有没有大佬解答一下printf逗号后面的代码是什么意思啊
c吧
全部回复
仅看楼主
level 1
悲夜哭 楼主
#include <stdio.h>
void fun1() {
int f1=1;
printf("fun1\n");
printf("fun1\n");
}
void fun2() {
int f2=2;
printf("fun2\n");
}
void fun3() {
}
void main() {
printf("sizeof(fun1)==%d\n",*(int *)((int)fun2+1)-*(int *)((int)fun1+1));
printf("sizeof(fun2)==%d\n",*(int *)((int)fun3+1)-*(int *)((int)fun2+1));
}
2023年06月21日 20点06分 1
level 1
通过一通百度我长知识了,这个应该是打印debug版本下,函数内存大小的。
debug版本会通过call ILT表地址 再jmp真正的函数地址。
所以要(int)fun+1把E9去掉,获取jmp真正的函数地址。
逆向刚学,不是特别懂,错了就看个笑话吧[吐舌]
2023年06月25日 02点06分 2
C萌新更不懂了[委屈]
2023年06月26日 22点06分
@悲夜哭 我也是个萌新,但是如果你是看不懂*(int *)((int)fun2+1)这个,那得学指针和函数指针,如果是看不懂为什么要两个相减,这个我不是特别懂不敢乱说。
2023年06月27日 13点06分
1