10.18.2007

CopyFunction To RAM, Load and Run

上一篇(http://realchecko.blogspot.com/2007/10/loadandrun-overwrite-running-program.html)要宣告 assembly 中的label 的宣告有點不好。
因為是code label,所以還是宣告成 function 比較好 (否則 compiler 會作取值運算)。

總結一下,就是:
extern "C" void CopyAndRun_Start(void);
extern "C" void CopyAndRun_End(void);




memcpy((int*)0x0400,(int*)CopyAndRun_Start,(unsigned int)CopyAndRun_End - (unsigned int)CopyAndRun_Start);

((void(*)(int,int,int))0x00000400)(0x33800000,(int)0x31000000,FileSize ());


這樣就可以了。

沒有留言: