µÚ3Õ½ø³Ì

2026/4/29 0:15:26

Èç¹ûÔÚº¯Êýµ÷Óùý³ÌÖУ¬¶ÑÕ»²Ù×÷ÎÞ·¨ÊµÏÖÆ½ºâ£¬¸²¸ÇÁË·µ»ØµÄµØÖ·£¬º¯Êý¾ÍÎÞ·¨·µ »ØÁË¡£

Àý3-11Òç³ö´úÂëµÄʵÏÖ¡£ #include usingnamespacestd; inttest(); intmain() {

test(); label1:

cout<<\label2: _asmnop; _asmnop; _asmnop; _asmnop;

cout<<\return0; }

inttest() {

inttest[2]; inttemp;

cout<

for(inti=0;i<=3;i++) {

cin>>temp; test[i]=temp; }

cout<<&temp; cout<<&test[0]; cout<<&test[1]; cout<<&test[2]; cout<<&test[3]; cout<

cout<<\return0; }

ÔÚtestº¯ÊýÖУ¬¶¨ÒåÁËÒ»¸ö¿ÉÒÔ´æ´¢2¸ö32λÕûÊýµÄtestÊý×飬Ȼ¶øÏÂÃæµÄÑ­»· ´úÂëÈ´ÏòÕâ¸öµØÖ·Ð´ÈëÁË4¸öÔªËØ¡£ºóÃæµÄÁ½¸öÔªËØÎÞÇ鵨¸²¸ÇÁË·µ»ØµÄµØÖ·£¬µ¼Ö º¯ÊýÖ´ÐкóÎÞ·¨·µ»Ø¡£testº¯ÊýÄÚ²¿¶¨ÒåÁËÁ½¸ö¾Ö²¿±äÁ¿£¬testÊý×éÔªËØÕ¼ÓöÑÕ»8

¸ö×Ö½Ú£¬¶øtempÕ¼ÁË4¸ö×Ö½Ú¡£ÕâÑù¶ÑÕ»Öд洢µÄÔªËØ×ÔÉ϶øÏÂÒÀ´ÎΪtemp¡¢test[0]¡¢ test[1]¡¢test[2]ºÍº¯Êý·µ»ØµÄµØÖ·¡£ÓÉÓÚ¶ÑÕ»Ö¸ÕëÊÇ»ùÓÚÄÚ´æÏßÐÔ·Ö²¼µÄ£¬forÑ­»·Ë³ ÐòдÈëÁË4¸öÔªËØ£¬È´°Ñº¯Êý·µ»ØµÄµØÖ·ÎÞÇ鸲¸ÇÁË¡£ÆäÖÐtest[3]´æ·Å×Åtest·µ»ØµÄ µØÖ·¡£

ÓÉ´Ë¿ÉÒÔͨ¹ý¸Ä±ä²ÎÊýµÄÊäÈë¸Ä±äº¯ÊýµÄÖ´ÐÐÁ÷³Ì¡£ÕâÑù¿ÉÒÔÍÆ¶ø¹ãÖ®£¬Èç¹ûÒç ³öÁ˸ü¶àµÄ´úÂ룬¿ÉÒÔͨ¹ý²éÕÒº¯ÊýµÄ·µ»ØµØÖ·±£´æÔÚÄĸö¶ÑÕ»Ö¸ÕëÇøÓò£¬¾«ÐÄÐÞ¸Ä Õâ¸öÇøÓòµÄÖµ£¬Ê¹ÆäÖ¸ÏòÒ»¸öÌØÊâµÄÖ¸Áî¡£±ÈÈçjmpesp£¬ÕâÑùº¯Êý·µ»Øºó£¬½«Ìø×ªµ½ Õâ¸öµØÖ·ÔËÐУ¬¶øjmpespÖ¸Áî¿ÉÒÔʹÓöÑÕ»µÄÊý¾ÝÀ´µ±×÷Ö¸ÁîÔËÐС£ÎªÁË¶ÔÆë£¬¿É ÒÔÔÚÒç³ö´úÂëÖмÓÈëÒ»Ð©ÌØÊâÖ¸Áî±ÈÈçnopÖ¸Áî¡£

µ±È»Òç³öÇé¿ö×î³£¼ûµÄÊÇ×Ö·û´®Êý×éÒç³ö¡£³öÏÖÕâÖÖÇé¿öµÄ¸ù±¾Ô­ÒòÊÇûÓжԲÎ

ÊýÖеÄ×Ö·û´®³¤¶È×÷ÏÞÖÆ£¬µ¼Ö¶à³öÀ´µÄ×Ö·û´®Öаüº¬Á˶ñÒâ´úÂë¡£ÓÉÓÚC×Ö·û´®Ò» °ã¶¼ÊDzÉÓÃÁã½áβµÄ£¬Òò´Ë×Ö·û´®²Ù×÷º¯ÊýÒ»¼ûµ½Á㣬¾ÍÈÏΪ×Ö·û´®½áÊøÁË£¬¶ø¾«ÐÄ ±àдµÄÒç³ö´úÂë²»¿É±ÜÃâµØ»áÅöµ½Ö¸ÁîÖаüº¬ÁãµÄÇé¿ö¡£ÎªÁ˲»Ï£Íû°ÑÖ¸Áî½Ø¶Ï£¬ÓРʱ»¹ÐèÒª¶ÔÕâЩָÁî½øÐÐÌØÊâ±àÂ룬±ÈÈçºÍÒ»¸öÖµ½øÐÐÒì»ò²Ù×÷¡£×¢Èë´úÂë½øÈëÒ»¸ö İÉúµÄ»·¾³ÖÐÔËÐУ¬»¹ÐèÒª½â¾öÖî¶àµÄÎÊÌ⣬±ÈÈçAPIº¯Êýµ÷Óõȡ£×ÜÖ®£¬Òç³ö´úÂë µÄ±àдÐèÒª±È½Ï¸ßµÄ±à³Ì¼¼ÄÜ¡£

¶ÔÓÚ×¢Èëµ½Win32Ó¦ÓóÌÐò½ø³ÌÖеĴúÂë¶øÑÔ£¬Æä´úÂëµÄʵÏÖµ¥¿¿Ò»Ð©»ã±àÖ¸Áî ÊÇÔ¶Ô¶²»¹»µÄ£¬ËüÖ»ÓÐͨ¹ýµ÷ÓÃWindowsAPIº¯Êý²ÅÄÜÍê³É±ØÒªµÄ¹¦ÄÜ¡£±ÈÈçÏò WindowsÌí¼ÓÓû§£¬ÉèÖÃÓû§ÃÜÂ룬°ÑÓû§¼ÓÈëµ½¹ÜÀíÔ±×飬´ò¿ªÒ»¸öShell´°¿Ú£¬ Æô¶¯Telnet·þÎñ£¬µ÷ÓÃSocketº¯Êý½ÓÊպͷ¢ËÍÊý¾ÝµÈ¡£Íê³ÉÕâЩ¹¦Äܶ¼ÐèÒªµ÷Óà WindowsAPIº¯Êý¡£È»¶ø×¢ÈëµÄ´úÂëÊÇÎÞ·¨Ö±½ÓÖªµÀÕâЩAPIµÄº¯ÊýµØÖ·µÄ£¬ÉõÖÁ×¢ ÈëµÄ½ø³Ì¸ù±¾¾ÍûÓÐʹÓÃÕâЩº¯ÊýµÄ¶¯Ì¬Á´½Ó¿â£¬ËùÒÔ×¢Èë´úÂëºÍ´´½¨Ô¶³ÌÏß³ÌÒ»Ñù£¬ ÐèÒªÖªµÀÕâЩº¯ÊýµÄÈë¿ÚµØÖ·£¬±ØÒªµÄÇé¿öÏ»¹ÐèÒªÊÖ¹¤¼ÓÔØ¶¯Ì¬Á´½Ó¿â¡£

¼ÓÔØÒ»¸ö¶¯Ì¬Á´½Ó¿âÐèÒªµ÷ÓÃWindowsÖеÄLoadLibraryºÍGetProcAddressº¯Êý£¬ ÕâÁ½¸öº¯ÊýÊÇKernel32.DLLµÄÊä³öº¯Êý£¬¶ø¼¸ºõËùÓеÄWin32Ó¦ÓóÌÐò¶¼»áʹÓÃÕâ ¸ö¶¯Ì¬Á´½Ó¿â¡£ÎÒÃÇÖ»ÒªµÃµ½Õâ¸ö¶¯Ì¬Á´½Ó¿âµÄ»ùµØÖ·¡£µÃµ½Õâ¸ö¶¯Ì¬Á´½Ó¿âµÄ»ùµØ Ö·Ö®ºó£¬¾Í¿ÉÒÔͨ¹ý±éÀúÕâ¸ö¿âµÄexport±íµÃµ½ËüÌṩµÄLoadLibraryºÍ

GetProcAddressº¯ÊýµØÖ·¡£ÓÐÁËÕâÁ½¸öº¯Êý£¬¾Í¿ÉÒÔ¼ÓÔØÈκεĶ¯Ì¬Á´½Ó¿â£¬²¢µ÷Óà ËüÌṩµÄÊä³öº¯Êý¡£

ËÑË÷Kernel32»ùµØÖ·µÄ·½·¨Óкܶ࣬µ«ÊÇÕâЩ·½·¨Ò»°ã¶¼ÊÇͨ¹ýËüÌṩµÄAPI

º¯Êý¼ä½ÓµÃµ½µÄ¡£±ÈÈç˵ÌṩÁËkernel32.dllµÄÒ»¸öÌØÊâµÄUnhandledExceptionFilter Êä³öº¯Êý¡£Õâ¸öº¯ÊýµÄµØÖ·±È½ÏÌØÊ⣬Ëü¿ÉÒÔͨ¹ýÏÂÃæµÄ»ã±àÖ¸Áî»ñµÃ£ºmovesi,fs:0 lodsd retry:

cmp[eax],0xffffffff

jeexit//Èç¹ûµ½´ï×îºóÒ»¸ö½Úµã(ËüµÄpfnHandlerÖ¸ÏòUnhandledExceptionFilter) moveax,[eax]//·ñÔòÍùºó±éÀú£¬Ò»Ö±µ½×îºóÒ»¸ö½Úµã jmpretry

exit:

ÓÐÁËÕâ¸öµØÖ·Ö®ºó£¬¾Í¿ÉÒÔͨ¹ýÏÂÃæµÄ´úÂëµÃµ½kernel32.dllµÄ»ùµØÖ·ÁË¡£ ÏÂÃæÊÇÍêÕû´úÂ룺 #include #include

__inline__declspec(naked)unsignedintGetKernel32() {

__asm {

pushesi pushecx movesi,fs:0 lodsd retry:

cmp[eax],0xffffffff

jeexit//Èç¹ûµ½´ï×îºóÒ»¸ö½Úµã(ËüµÄpfnHandlerÖ¸ÏòUnhandledExceptionFilter) moveax,[eax]//·ñÔòÍùºó±éÀú,Ò»Ö±µ½×îºóÒ»¸ö½Úµã jmpretry exit:

moveax,[eax+4] FindMZ:

andeax,0xffff0000//¸ù¾ÝPEÖ´ÐÐÎļþÒÔ64k¶Ô½çµÄÌØÕ÷¼Ó¿ì²éÕÒËÙ¶È

cmpwordptr[eax],'ZM'//¸ù¾ÝPE¿ÉÖ´ÐÐÎļþÌØÕ÷²éÕÒKERNEL32.DLLµÄ»ùÖ· jneMoveUp//Èç¹ûµ±Ç°µØÖ·²»·ûºÏMZÍ·²¿ÌØÕ÷,ÔòÏòÉϲéÕÒ movecx,[eax+0x3c] addecx,eax

cmpwordptr[ecx],'EP'//¸ù¾ÝPE¿ÉÖ´ÐÐÎļþÌØÕ÷²éÕÒKERNEL32.DLLµÄ»ùÖ·

jeFound//Èç¹û·ûºÏMZ¼°PEÍ·²¿ÌØÕ÷,ÔòÈÏΪÒѾ­ÕÒµ½,²¢Í¨¹ýEax·µ»Ø¸øµ÷ÓÃÕß MoveUp:

deceax//×¼±¸Ö¸ÏòÏÂÒ»¸ö½çÆðʼµØÖ· jmpFindMZ Found: popecx popesi ret } }

voidmain(void) {

printf(\getch(); }

Õâ¸ö³ÌÐòÔËÐкó»áµÃµ½Ò»¸ö77E60000µÄÊä³ö½á¹û£¬Õâ¸ö½á¹ûÊǺÍKernel32ÔÚÕâ ¸ö±àÒëºó³ÌÐòµÄµ¼Èë»ùµØÖ·Ïà·ûµÄ¡£Èçͼ3-5Ëùʾ¡£

ÓÐÁËÄ£¿é¼ÓÔØµÄ»ùµØÖ·£¬¾Í¿ÉÒÔ¸ù¾Ýº¯ÊýÃûµÃµ½¾ßÌ庯ÊýµÄÈë¿ÚµØÖ·ÁË¡£ÊµÏÖÕâ ¸öÄ¿µÄÐèÒªÁ˽âWin32µÄ´æ´¢½á¹¹¡£²éÕÒ²½ÖèÈçÏ£º (1)¶¨Î»µ½PEÎļþÍ·(»ùµØÖ·)¡£

(2)´ÓPEÎļþÍ·²¿µÄ¿ÉÑ¡ÎļþÍ·(OptionHeader)µÃµ½datadirectory(Êý¾ÝĿ¼)µÄµÚ Ò»ÏµÃµ½µ¼³ö±íµÄµØÖ·VirtualAddress¡£

(3)´ÓAddressOfNames×Ö¶ÎָʾµÄº¯ÊýÃû³Æ±íµÄµÚÒ»Ïʼ£¬½«Ã¿Ò»ÏîµÄº¯ÊýÃû ÓëGetProcAddressº¯ÊýÃû½øÐбȽϣ¬Ö±µ½ÕÒµ½Æ¥Å亯ÊýΪֹ¡£

(4)¸ù¾ÝÆ¥ÅäÏîÔÚÊä³öº¯Êý±íÖеÄË÷ÒýÖµ£¬ÔÚAddressOfFunctionsÖвéÕÒº¯ÊýµÄÈë ¿ÚµØÖ·¡£ Movedx,edi

Assumeedx:ptrImage_DOS_HEADER Addedx,[edx].e_lfanew

AssumeEdx:ptrIMAGE_NT_HEADERS

Movedx,[edx].OptionHeader.DataDireectory.VirtualAddress AddEdx,hKernel32;//hKernel32ΪÉÏÃæ²éµ½µÄº¯Êý»ùµØÖ·¡£ Assumeedx:ptrImage_Export_Directory Movebp,[edx].AddressOfNames Addebp,hKernel32 Xoreax,eax .Repeat

movecx,14;//GetProcAddressº¯ÊýµÄ³¤¶È movedi,[ebp] addedi,hKernel32

leaesi,szGetProcAddress;//º¯ÊýÃû³Æ repzcomsb .IfZero? .Break .Endif


µÚ3Õ½ø³Ì.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ
ËÑË÷¸ü¶à¹ØÓÚ£º µÚ3Õ½ø³Ì µÄÎĵµ
Ïà¹ØÍÆ¼ö
Ïà¹ØÔĶÁ
¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩

ÏÂÔØ±¾ÎĵµÐèÒªÖ§¸¶ 10 Ôª

Ö§¸¶·½Ê½£º

¿ªÍ¨VIP°üÔ»áÔ± ÌØ¼Û£º29Ôª/ÔÂ

×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºxuecool-com QQ£º370150219