能力值:
( LV7,RANK:110 )
|
-
-
2 楼
先占个位,以后有什么新的关于SMC的心得就写在这里
当然也希望大家谈谈自己对SMC的心得!
-----------------------------------------------------------------------------
今天想了个笨办法,来得到函数的(机器码的)长度:
BOOL CSMCDlg::msgboxA()
{
::MessageBox(m_hWnd,"123456789","LILI",0);
return true;
}
int CSMCDlg::Aend()
{
return 0;
}
.......................
其它代码
.........................
BOOL CSMCDlg::msgboxB()
{
::MessageBox(m_hWnd,"987654321","LILI",0);
return true;
}
int CSMCDlg::Bend()
{
return 1;
}
在一个函数(A)的结尾写一个无用的函数(Aend),并取得它的地址,两个地址相减,就得到了函数(A)的长度
void CSMCDlg::OnOK()
{
int Alen,Blen;
msgboxB();
BOOL (CSMCDlg::*pa)(void)=&CSMCDlg::msgboxA;
BOOL (CSMCDlg::*pb)(void)=&CSMCDlg::msgboxB;
int (CSMCDlg::*paend)(void)=&CSMCDlg::Aend;
int (CSMCDlg::*pbend)(void)=&CSMCDlg::Bend;//这两个函数的代码不能一样,否则会被VC++优化,变成两个指针指向同一地址
__asm
{
mov eax,pa
mov ebx,paend
sub ebx,eax
mov Alen,ebx
mov eax,pb
mov ebx,pbend
sub ebx,eax
mov Blen,ebx
mov esi,pa
mov edi,pb
mov ecx,Alen//这里长度应该不会有错误了的
rep movsb
}
msgboxB();
}
|
能力值:
( LV7,RANK:110 )
|
-
-
3 楼
一下就沉下去了,顶起来!
是不是大家对SMC这东西不太感冒
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢,思想值得学习呀
|
能力值:
( LV9,RANK:170 )
|
-
-
5 楼
写的很好,正好学习
SMC是不是有限制,只能是CODE段可写
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
看了你写的这些,稍有点感觉,但是还中不是很懂它的意思。。。功底太差。。
|
能力值:
( LV7,RANK:110 )
|
-
-
7 楼
#pragma comment(linker, "/SECTION:.text,ERW")//.text段一定要改成可读写
.text就是代码段,一般是不可写的,用了以上就可写了.
|
能力值:
( LV7,RANK:110 )
|
-
-
8 楼
我也是略知一二,哪里不懂,说出来,大家讨论讨论!
|
能力值:
(RANK:10 )
|
-
-
9 楼
这种方法实际意义在那?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
ShellCode的自解码 还算SMC啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
学习中 正需要
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
好东西,顶一个.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
留名
|
能力值:
(RANK:210 )
|
-
-
14 楼
smc 在碰到多线程的时候咋办
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
最近刚刚接触到SMC,跟LZ学习下。
|
|
|