主頁 > 軟體工程 > Hook IE11 WSARecv 中出現漏資料的問題?

Hook IE11 WSARecv 中出現漏資料的問題?

2020-09-18 22:16:58 軟體工程

   使用detours Hook IE11 中 WSARecv WSASend CreateThreadpoolIo StartThreadpoolIo CancelThreadpoolIo在IE11中
有效另外Hook的其它API 如WSAGetOverlappedResult GetQueuedCompletionStatus WaitForThreadpoolIoCallbacks
GetQueuedCompletionStatusEx 等等在IE11下就沒有作用,在Hook WSARecv  中出現問題了,我做的hook是使用
webbrowser進行的。

   在ie11中開始打開網頁時會出現好幾個socket 與closesocket的無資料操作的SOCKET在以前ie8的版本就好像沒出現過,
不知這是什么原因。

   先說一下我Hook的程序,IE11內核中socket 的通訊是通過完成埠進行的,首先是呼叫ws2_32.dll 中的 WSASocketA
 WSASocketW 有時一個SOCKET 兩個函式都進去了,這個有點不明白,再進入socket呼叫,這里為什么WSASocke
 socket 兩個版本在同一個SOCKET上都會呼叫呢?

  進入CreateThreadpoolIo中建立SOCKET與IO 的聯系,這是要保存每一對SOCKET 與 IO 的資料還要加一個回呼地址。
 
 PTP_IO __stdcall Mine_CreateThreadpoolIo(HANDLE fl,
 PTP_WIN32_IO_CALLBACK pfnio, PVOID pv, PTP_CALLBACK_ENVIRON  pcbe)
{
    char szBuf[255];
    PTP_IO rv = 0;
    __try {//MyPTPFun
rv = Real_CreateThreadpoolIo(fl,MyPTPFun,pv,pcbe);
sprintf(szBuf,"CreateThreadpoolIo: S:0x%08x  IO:0x%08x FUN:0x%08x\r\n",fl,rv,pfnio);HuiOutDebug(szBuf,_T("hookApi"));
g_manage.BingSocketToIo(rv,(SOCKET)fl,(void*)pfnio);//這里就是保存操作。
    } __finally {
    };return rv;
}
VOID __stdcall MyPTPFun(PTP_CALLBACK_INSTANCE Instance,PVOID Context,PVOID Overlapped,
ULONG IoResult,ULONG_PTR NumberOfBytesTransferred,PTP_IO Io)
{
char szBuf[255];
PTP_WIN32_IO_CALLBACK pFun= (PTP_WIN32_IO_CALLBACK)g_manage.GetIoFun(Io);
sprintf(szBuf,"MyPTPFun: IO:0x%08x FUN:0x%08x\r\n",Io,pFun);HuiOutDebug(szBuf,_T("hookApi"));
if( pFun ){
g_manage.ProceIo(Io,Overlapped,Context,IoResult,NumberOfBytesTransferred);//先呼叫自的的回呼函式,就是這里出現漏資料?????
pFun(Instance,Context,Overlapped,IoResult,NumberOfBytesTransferred,Io);//然后是原回呼函式
}
}   //g_manage是一個保存資料的全域類,類中使用了CCriticalSection m_sc;對所用操作進行了保護。

  進入StartThreadpoolIo操作,也就是設備IO與SOCKET的一次資料操作正式建立聯系。

   連接操作不是WSAConnect與connect,是進入connectEx ,這個函式的Hook 比較麻煩,后面我會說明這個函式是怎么hook的,
在IE8中在hook connect時就會出出兩個握手的操作,send 與recv,發送與接收的只有一個位元組或沒有位元組,但IE11中只進入了recv,那個send沒進入,握手操作的發送資料據不知是怎么操作,這是什么原因呢?
   connectEx 之后沒有send 或WSASend 操作,直接進入了回呼函式MyPTPFun ,MyPTPFun之后沒有呼叫StartThreadpoolIo直接進入recv操作,有時recv與沒有操作。

   連接建立后,再次進入StartThreadpoolIo進行設備IO與SOCKET的一次資料操作建立聯系。
  進入WSASend,好像這個函式的操作能立即完成似的沒進入回呼MyPTPFun中,直接CancelThreadpoolIo取消io完成埠的回呼。
  再次進入StartThreadpoolIo進行設備IO與SOCKET的一次資料操作建立聯系。
然后就是WSARecv,這個操作有時能立即完成直接CancelThreadpoolIo取消io完成埠的回呼。有時進入回呼函式MyPTPFun,
int __stdcall Mine_WSARecv(SOCKET a0,LPWSABUF a1,DWORD a2,LPDWORD a3,LPDWORD a4,
LPWSAOVERLAPPED a5,LPWSAOVERLAPPED_COMPLETION_ROUTINE a6)
{    int rv = 0;
DWORD dw;
DWORD dwLen ,dwLen1;
LPWSABUF lp;
char szBuf[500];
    __try {
        rv = Real_WSARecv(a0, a1, a2, a3, a4, a5, a6);
sprintf(szBuf,"WSARecv:s:0x%08x  Len:%d len:%d\r\n",a0,0,a1[0].len);
HuiOutDebug(szBuf,_T("hookApi"));
g_manage.SetOp(a0,2,a1,a2,a5,a1[0].len);//這里進行了保存操作,以便觀察對比;
    } __finally {
    };
    return rv;
}
}
在上述的程序中,g_manage.BingSocketToIo 對回呼,完成設備IO, 套接字建立了資料聯系,g_manage.SetOp對接識訓發送
資料的 LPWSAOVERLAPPED  LPWSABUF 指標進行了保存,以便取數或觀察。其中在我的回呼中對LPWSABUF進行觀察時出現了原有的資料消失了,這個應該是new 產生的,因為我對原WSARecv LPWSABUF 結構中len進行了保存,發現是1024,可是在MyPTPFun -> g_manage.ProceIo 進行對比時,原LPWSABUF  指標結構中的len 不是1024了是很大的一個數,這是不可能的,結論就是原WSARecv 中new 產生的LPWSABUF  被釋放了,因為呼叫MyPTPFun 回呼就意味著WSARecv回傳時,資料應該沒收到,但在MyPTPFun 時,原LPWSABUF又被釋放了,那IE11在WSARecv 回傳與MyPTPFun 回呼間是用什么來取資料的呢?還有其它的API嗎?在MyPTPFun 中,是我先觀察,再呼叫IE11給的回呼函式的。完成埠CreateThreadpoolIo  StartThreadpoolIo 的這套API還有別的能取數嗎?WaitForThreadpoolIoCallbacks這個api沒有進入過,GetQueuedCompletionStatus這個API應該與CreateThreadpoolIo  不是一個體系的吧!

整個hook程序中對進入的API WSASocketW WSASocketA CreateThreadpoolIo StartThreadpoolIo connectex recv  WSARecv WSASend  socket closesocket 進行了記事本輸出觀察。

下面結出呼叫的程序(整理的)
WSASocketW:s:0x00000448
WSASocketA:s:0x00000448
CreateThreadpoolIo: S:0x00000448  IO:0x0052f7a8 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f7a8
connectex:s:0x00000448
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f7a8
WSASend:s:0x00000448  Len:0 len:770
CancelThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:1024
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
recv:s:0x00000448  Len:-1
recv:s:0x00000448  Len:-1
StartThreadpoolIo:IO:0x0052f7a8
WSASend:s:0x00000448  Len:0 len:867
CancelThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:1024
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0


WSASocketW:s:0x0000043c
WSASocketA:s:0x0000043c
CreateThreadpoolIo: S:0x0000043c  IO:0x0052f688 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f688
connectex:s:0x0000043c
MyPTPFun: IO:0x0052f688 FUN:0x7601dfb0
recv:s:0x0000043c  Len:-1
recv:s:0x0000043c  Len:-1
StartThreadpoolIo:IO:0x0052f688
WSASend:s:0x0000043c  Len:0 len:708
CancelThreadpoolIo:IO:0x0052f688
StartThreadpoolIo:IO:0x0052f688
WSARecv:s:0x0000043c  Len:0 len:1024
MyPTPFun: IO:0x0052f688 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f688
WSARecv:s:0x0000043c  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f688
recv:s:0x0000043c  Len:-1

WSASocketW:s:0x00000354
socket:s:0x00000354
closesocket:s:0x00000354
WSASocketW:s:0x00000354
WSASocketA:s:0x00000354
CreateThreadpoolIo: S:0x00000354  IO:0x004d8f48 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x004d8f48
connectex:s:0x00000354
MyPTPFun: IO:0x004d8f48 FUN:0x7601dfb0
recv:s:0x00000354  Len:-1



uj5u.com熱心網友回復:

未整理的:
WSASocketW:s:0x00000274
WSASocketW:s:0x000002c8
WSASocketW:s:0x000002dc
WSASocketW:s:0x0000037c
socket:s:0x0000037c
closesocket:s:0x0000037c
WSASocketW:s:0x0000039c
WSASocketW:s:0x000003a8
socket:s:0x000003a8
closesocket:s:0x000003a8
socket:s:0x000002c8
socket:s:0x000002dc
WSASocketW:s:0x00000380
socket:s:0x00000380
WSASocketW:s:0x000003c0
socket:s:0x0000039c
WSASocketW:s:0x000003b4
socket:s:0x00000274
WSASocketW:s:0x000003a8
socket:s:0x000003a8
closesocket:s:0x000003a8
WSASocketW:s:0x00000390
socket:s:0x00000390
closesocket:s:0x000002dc
closesocket:s:0x00000274
WSASocketW:s:0x000002dc
closesocket:s:0x0000039c
socket:s:0x000003c0
closesocket:s:0x000002c8
socket:s:0x000002dc
closesocket:s:0x000002dc
closesocket:s:0x00000390
closesocket:s:0x00000380
WSASocketW:s:0x00000354
WSASocketW:s:0x0000039c
closesocket:s:0x000003c0
socket:s:0x000003b4
WSASocketW:s:0x00000390
WSASocketW:s:0x00000380
socket:s:0x00000354
socket:s:0x0000039c
closesocket:s:0x000003b4
socket:s:0x00000390
closesocket:s:0x00000390
closesocket:s:0x00000354
closesocket:s:0x0000039c
WSASocketW:s:0x000003b4
socket:s:0x000003b4
closesocket:s:0x000003b4
WSASocketW:s:0x00000354
WSASocketW:s:0x00000424
socket:s:0x00000380
WSASocketW:s:0x000003c0
WSASocketW:s:0x0000042c
WSASocketA:s:0x00000354
socket:s:0x00000424
closesocket:s:0x00000424
socket:s:0x000003c0
closesocket:s:0x000003c0
closesocket:s:0x00000380
socket:s:0x0000042c
CreateThreadpoolIo: S:0x00000354  IO:0x004d8f48 FUN:0x7601dfb0
WSASocketW:s:0x0000043c
WSASocketW:s:0x00000440
WSASocketW:s:0x00000448
closesocket:s:0x0000042c
StartThreadpoolIo:IO:0x004d8f48
WSASocketA:s:0x0000043c
WSASocketA:s:0x00000440
WSASocketA:s:0x00000448
WSASocketW:s:0x00000450
WSASocketW:s:0x0000042c
connectex:s:0x00000354
CreateThreadpoolIo: S:0x0000043c  IO:0x0052f688 FUN:0x7601dfb0
CreateThreadpoolIo: S:0x00000440  IO:0x0052f718 FUN:0x7601dfb0
CreateThreadpoolIo: S:0x00000448  IO:0x0052f7a8 FUN:0x7601dfb0
socket:s:0x00000450
socket:s:0x0000042c
WSASocketW:s:0x00000458
WSASocketW:s:0x0000045c
StartThreadpoolIo:IO:0x0052f688
StartThreadpoolIo:IO:0x0052f718
closesocket:s:0x00000450
StartThreadpoolIo:IO:0x0052f7a8
closesocket:s:0x0000042c
socket:s:0x00000458
socket:s:0x0000045c
connectex:s:0x0000043c
connectex:s:0x00000440
MyPTPFun: IO:0x0052f688 FUN:0x7601dfb0
MyPTPFun: IO:0x004d8f48 FUN:0x7601dfb0
MyPTPFun: IO:0x0052f718 FUN:0x7601dfb0
recv:s:0x0000043c  Len:-1
WSASocketW:s:0x00000468
recv:s:0x00000354  Len:-1
WSASocketW:s:0x0000042c
closesocket:s:0x00000458
closesocket:s:0x0000045c
WSASocketW:s:0x00000450
connectex:s:0x00000448
WSASocketW:s:0x00000464
recv:s:0x00000440  Len:-1
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0
socket:s:0x00000468
socket:s:0x0000042c
WSASocketW:s:0x00000458
WSASocketW:s:0x0000045c
socket:s:0x00000450
socket:s:0x00000464
StartThreadpoolIo:IO:0x0052f7a8
closesocket:s:0x00000468
closesocket:s:0x0000042c
socket:s:0x00000458
socket:s:0x0000045c
closesocket:s:0x00000450
closesocket:s:0x00000464
WSASend:s:0x00000448  Len:0 len:770
WSASocketW:s:0x00000468
closesocket:s:0x00000458
closesocket:s:0x0000045c
WSASocketW:s:0x00000450
socket:s:0x00000450
CancelThreadpoolIo:IO:0x0052f7a8
socket:s:0x00000468
WSASocketW:s:0x00000458
WSASocketW:s:0x0000042c
WSASocketW:s:0x0000045c
WSASocketW:s:0x00000464
socket:s:0x00000464
StartThreadpoolIo:IO:0x0052f7a8
closesocket:s:0x00000468
WSARecv:s:0x00000448  Len:0 len:1024
closesocket:s:0x00000464
socket:s:0x0000042c
socket:s:0x00000458
socket:s:0x0000045c
closesocket:s:0x00000450
WSASocketW:s:0x00000468
closesocket:s:0x0000042c
closesocket:s:0x00000458
WSASocketW:s:0x00000458
WSASocketW:s:0x00000450
socket:s:0x00000468
WSASocketW:s:0x0000042c
closesocket:s:0x0000045c
WSASocketA:s:0x00000458
WSASocketW:s:0x00000464
socket:s:0x00000450
closesocket:s:0x00000468
WSASocketA:s:0x0000042c
CreateThreadpoolIo: S:0x00000458  IO:0x0050db40 FUN:0x7601dfb0
socket:s:0x00000464
closesocket:s:0x00000464
WSASocketW:s:0x00000468
WSASocketW:s:0x0000045c
CreateThreadpoolIo: S:0x0000042c  IO:0x00533ee0 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0050db40
closesocket:s:0x00000450
WSASocketW:s:0x00000464
socket:s:0x00000468
closesocket:s:0x00000468
StartThreadpoolIo:IO:0x00533ee0
connectex:s:0x00000458
WSASocketW:s:0x00000450
WSASocketA:s:0x00000464
socket:s:0x0000045c
WSASocketW:s:0x00000468
connectex:s:0x0000042c
WSASocketW:s:0x00000480
WSASocketA:s:0x00000450
CreateThreadpoolIo: S:0x00000464  IO:0x00527298 FUN:0x7601dfb0
closesocket:s:0x0000045c
socket:s:0x00000468
MyPTPFun: IO:0x0050db40 FUN:0x7601dfb0
WSASocketW:s:0x00000484
MyPTPFun: IO:0x00533ee0 FUN:0x7601dfb0
socket:s:0x00000480
CreateThreadpoolIo: S:0x00000450  IO:0x00534e38 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x00527298
WSASocketW:s:0x0000045c
closesocket:s:0x00000468
recv:s:0x00000458  Len:-1
socket:s:0x00000484
recv:s:0x0000042c  Len:-1
closesocket:s:0x00000480
StartThreadpoolIo:IO:0x00534e38
connectex:s:0x00000464
WSASocketA:s:0x0000045c
WSASocketW:s:0x00000468
closesocket:s:0x00000484
WSASocketW:s:0x00000480
connectex:s:0x00000450
WSASocketW:s:0x00000488
CreateThreadpoolIo: S:0x0000045c  IO:0x00535390 FUN:0x7601dfb0
socket:s:0x00000468
WSASocketW:s:0x00000484
socket:s:0x00000480
MyPTPFun: IO:0x00527298 FUN:0x7601dfb0
WSASocketW:s:0x0000048c
MyPTPFun: IO:0x00534e38 FUN:0x7601dfb0
socket:s:0x00000488
StartThreadpoolIo:IO:0x00535390
closesocket:s:0x00000468
socket:s:0x00000484
closesocket:s:0x00000480
recv:s:0x00000464  Len:-1
socket:s:0x0000048c
recv:s:0x00000450  Len:-1
closesocket:s:0x00000488
connectex:s:0x0000045c
WSASocketW:s:0x00000468
WSASocketA:s:0x00000468
WSASocketW:s:0x00000490
closesocket:s:0x0000048c
WSASocketW:s:0x00000488
WSASocketW:s:0x00000480
MyPTPFun: IO:0x00535390 FUN:0x7601dfb0
closesocket:s:0x00000484
CreateThreadpoolIo: S:0x00000468  IO:0x005315f8 FUN:0x7601dfb0
socket:s:0x00000490
WSASocketW:s:0x0000048c
socket:s:0x00000488
socket:s:0x00000480
recv:s:0x0000045c  Len:-1
WSASocketW:s:0x00000484
StartThreadpoolIo:IO:0x005315f8
closesocket:s:0x00000490
socket:s:0x0000048c
closesocket:s:0x00000488
closesocket:s:0x00000480
socket:s:0x00000484
connectex:s:0x00000468
WSASocketW:s:0x00000490
closesocket:s:0x0000048c
WSASocketW:s:0x00000488
WSASocketW:s:0x00000480
closesocket:s:0x00000484
WSASocketW:s:0x00000494
WSASocketA:s:0x00000490
WSASocketW:s:0x0000048c
socket:s:0x00000488
socket:s:0x00000480
WSASocketW:s:0x00000484
socket:s:0x00000494
CreateThreadpoolIo: S:0x00000490  IO:0x00534d10 FUN:0x7601dfb0
socket:s:0x0000048c
closesocket:s:0x00000488
closesocket:s:0x00000480
WSASocketA:s:0x00000484
closesocket:s:0x00000494
WSASocketW:s:0x00000494
socket:s:0x00000494
closesocket:s:0x00000494
CreateThreadpoolIo: S:0x00000484  IO:0x00536db8 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x00534d10
closesocket:s:0x0000048c
WSASocketW:s:0x00000488
MyPTPFun: IO:0x005315f8 FUN:0x7601dfb0
WSASocketW:s:0x00000494
socket:s:0x00000494
connectex:s:0x00000490
WSASocketW:s:0x0000048c
WSASocketA:s:0x00000488
recv:s:0x00000468  Len:-1
StartThreadpoolIo:IO:0x00536db8
WSASocketW:s:0x00000480
closesocket:s:0x00000494
MyPTPFun: IO:0x00534d10 FUN:0x7601dfb0
WSASocketW:s:0x00000498
WSASocketA:s:0x0000048c
CreateThreadpoolIo: S:0x00000488  IO:0x00537728 FUN:0x7601dfb0
connectex:s:0x00000484
socket:s:0x00000480
WSASocketW:s:0x00000494
recv:s:0x00000490  Len:-1
socket:s:0x00000498
CreateThreadpoolIo: S:0x0000048c  IO:0x00531690 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x00537728
WSASocketW:s:0x0000049c
closesocket:s:0x00000480
WSASocketA:s:0x00000494
closesocket:s:0x00000498
StartThreadpoolIo:IO:0x00531690
connectex:s:0x00000488
socket:s:0x0000049c
WSASocketW:s:0x00000480
CreateThreadpoolIo: S:0x00000494  IO:0x00539168 FUN:0x7601dfb0
WSASocketW:s:0x00000498
connectex:s:0x0000048c
WSASocketW:s:0x000004a0
MyPTPFun: IO:0x00536db8 FUN:0x7601dfb0
closesocket:s:0x0000049c
socket:s:0x00000480
StartThreadpoolIo:IO:0x00539168
socket:s:0x00000498
WSASocketW:s:0x000004a4
socket:s:0x000004a0
recv:s:0x00000484  Len:-1
WSASocketW:s:0x0000049c
closesocket:s:0x00000480
connectex:s:0x00000494
closesocket:s:0x00000498
socket:s:0x000004a4
closesocket:s:0x000004a0
socket:s:0x0000049c
MyPTPFun: IO:0x00531690 FUN:0x7601dfb0
MyPTPFun: IO:0x00537728 FUN:0x7601dfb0
WSASocketW:s:0x00000480
WSASocketW:s:0x000004a8
closesocket:s:0x000004a4
WSASocketW:s:0x000004a0
closesocket:s:0x0000049c
recv:s:0x0000048c  Len:-1
recv:s:0x00000488  Len:-1

uj5u.com熱心網友回復:

socket:s:0x00000480
socket:s:0x000004a8
WSASocketW:s:0x00000498
WSASocketW:s:0x000004a4
socket:s:0x000004a0
closesocket:s:0x00000480
closesocket:s:0x000004a8
socket:s:0x00000498
WSASocketW:s:0x0000049c
socket:s:0x000004a4
closesocket:s:0x000004a0
WSASocketW:s:0x000004a8
closesocket:s:0x00000498
socket:s:0x0000049c
WSASocketW:s:0x00000480
closesocket:s:0x000004a4
socket:s:0x000004a8
MyPTPFun: IO:0x00539168 FUN:0x7601dfb0
WSASocketW:s:0x00000498
closesocket:s:0x0000049c
socket:s:0x00000480
WSASocketW:s:0x000004a4
closesocket:s:0x000004a8
recv:s:0x00000494  Len:-1
WSASocketA:s:0x00000498
CreateThreadpoolIo: S:0x00000498  IO:0x005383d8 FUN:0x7601dfb0
WSASocketW:s:0x0000049c
closesocket:s:0x00000480
socket:s:0x000004a4
WSASocketW:s:0x000004a0
StartThreadpoolIo:IO:0x005383d8
WSASocketW:s:0x000004a8
WSASocketA:s:0x0000049c
WSASocketW:s:0x00000480
closesocket:s:0x000004a4
socket:s:0x000004a0
connectex:s:0x00000498
socket:s:0x000004a8
CreateThreadpoolIo: S:0x0000049c  IO:0x00539040 FUN:0x7601dfb0
WSASocketA:s:0x00000480
WSASocketW:s:0x000004a4
closesocket:s:0x000004a0
recv:s:0x00000488  Len:-1
closesocket:s:0x000004a8
StartThreadpoolIo:IO:0x00539040
CreateThreadpoolIo: S:0x00000480  IO:0x00539eb0 FUN:0x7601dfb0
WSASocketA:s:0x000004a4
WSASocketW:s:0x000004b0
WSASocketW:s:0x000004ac
WSASocketW:s:0x000004a8
connectex:s:0x0000049c
StartThreadpoolIo:IO:0x00539eb0
CreateThreadpoolIo: S:0x000004a4  IO:0x0053c870 FUN:0x7601dfb0
socket:s:0x000004b0
socket:s:0x000004ac
WSASocketA:s:0x000004a8
MyPTPFun: IO:0x00539040 FUN:0x7601dfb0
WSASocketW:s:0x000004b4
CreateThreadpoolIo: S:0x000004a8  IO:0x0053cd80 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0053c870
closesocket:s:0x000004b0
StartThreadpoolIo:IO:0x0053cd80
MyPTPFun: IO:0x00539eb0 FUN:0x7601dfb0
connectex:s:0x000004a8
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0
connectex:s:0x00000480
MyPTPFun: IO:0x005383d8 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x00539eb0
recv:s:0x00000498  Len:-1
StartThreadpoolIo:IO:0x00539040
WSASocketW:s:0x000004b0
socket:s:0x000004b0
closesocket:s:0x000004b0
closesocket:s:0x000004ac
WSASocketW:s:0x000004ac
MyPTPFun: IO:0x0053cd80 FUN:0x7601dfb0
MyPTPFun: IO:0x0053c870 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f7a8
socket:s:0x000004b4
connectex:s:0x000004a4
socket:s:0x000004ac
StartThreadpoolIo:IO:0x0053cd80
WSARecv:s:0x00000448  Len:0 len:4096
WSASocketW:s:0x000004b0
closesocket:s:0x000004b4
StartThreadpoolIo:IO:0x0053c870
closesocket:s:0x000004ac
CancelThreadpoolIo:IO:0x0052f7a8
socket:s:0x000004b0
closesocket:s:0x000004b0
WSASocketW:s:0x000004b0
WSASocketA:s:0x000004b0
CreateThreadpoolIo: S:0x000004b0  IO:0x0057c810 FUN:0x7601dfb0
WSASocketW:s:0x000004b4
WSASocketW:s:0x0000057c
socket:s:0x0000057c
socket:s:0x000004b4
StartThreadpoolIo:IO:0x0057c810
closesocket:s:0x0000057c
closesocket:s:0x000004b4
connectex:s:0x000004b0
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
WSASocketW:s:0x00000594
StartThreadpoolIo:IO:0x0052f7a8
socket:s:0x00000594
WSARecv:s:0x00000448  Len:0 len:4096
closesocket:s:0x00000594
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
MyPTPFun: IO:0x0057c810 FUN:0x7601dfb0
WSARecv:s:0x00000448  Len:0 len:4096
StartThreadpoolIo:IO:0x0057c810
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
WSARecv:s:0x00000448  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f7a8
recv:s:0x00000448  Len:-1
WSASend:s:0x0000049c  Len:0 len:171
CancelThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x00539040
WSARecv:s:0x0000049c  Len:0 len:1024
WSASend:s:0x000004a8  Len:0 len:170
CancelThreadpoolIo:IO:0x0053cd80
MyPTPFun: IO:0x00539040 FUN:0x7601dfb0
WSASend:s:0x00000480  Len:0 len:171
StartThreadpoolIo:IO:0x0053cd80
StartThreadpoolIo:IO:0x00539040
CancelThreadpoolIo:IO:0x00539eb0
WSARecv:s:0x000004a8  Len:0 len:1024
WSARecv:s:0x0000049c  Len:0 len:94
CancelThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x00539eb0
StartThreadpoolIo:IO:0x00539040
WSARecv:s:0x00000480  Len:0 len:1024
WSARecv:s:0x0000049c  Len:0 len:1024
CancelThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x00539040
MyPTPFun: IO:0x0053cd80 FUN:0x7601dfb0
WSARecv:s:0x0000049c  Len:0 len:1024
CancelThreadpoolIo:IO:0x00539eb0
CancelThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x0053cd80
WSARecv:s:0x000004a8  Len:0 len:90
CancelThreadpoolIo:IO:0x0053cd80
StartThreadpoolIo:IO:0x0053cd80
WSARecv:s:0x000004a8  Len:0 len:1024
WSASend:s:0x000004a4  Len:0 len:171
StartThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x00539eb0
WSASend:s:0x0000049c  Len:0 len:166
CancelThreadpoolIo:IO:0x0053cd80
CancelThreadpoolIo:IO:0x00539040
CancelThreadpoolIo:IO:0x0053c870
WSARecv:s:0x00000480  Len:0 len:94
StartThreadpoolIo:IO:0x0053cd80
StartThreadpoolIo:IO:0x00539040
StartThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004a4  Len:0 len:1024
WSARecv:s:0x0000049c  Len:0 len:3072
CancelThreadpoolIo:IO:0x00539040
WSARecv:s:0x000004a8  Len:0 len:1024
WSASend:s:0x000004b0  Len:0 len:171
CancelThreadpoolIo:IO:0x0053cd80
CancelThreadpoolIo:IO:0x0053c870
CancelThreadpoolIo:IO:0x00539eb0
StartThreadpoolIo:IO:0x0053c870
StartThreadpoolIo:IO:0x00539eb0
WSARecv:s:0x00000480  Len:0 len:1024
WSARecv:s:0x000004a4  Len:0 len:94
CancelThreadpoolIo:IO:0x0053c870
CancelThreadpoolIo:IO:0x00539eb0
StartThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004a4  Len:0 len:1024
StartThreadpoolIo:IO:0x0053cd80
WSASend:s:0x000004a8  Len:0 len:358
CancelThreadpoolIo:IO:0x0053cd80
StartThreadpoolIo:IO:0x0053cd80
StartThreadpoolIo:IO:0x00539eb0
WSARecv:s:0x00000480  Len:0 len:1024
CancelThreadpoolIo:IO:0x00539eb0
CancelThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004a8  Len:0 len:3072
recv:s:0x0000043c  Len:-1
CancelThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004a4  Len:0 len:1024
CancelThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004b0  Len:0 len:1024
CancelThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x0052f688
WSASend:s:0x0000043c  Len:0 len:708
CancelThreadpoolIo:IO:0x0052f688
StartThreadpoolIo:IO:0x0057c810
WSARecv:s:0x000004b0  Len:0 len:90
CancelThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x0052f688
MyPTPFun: IO:0x0053cd80 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0057c810
WSARecv:s:0x000004b0  Len:0 len:1024
CancelThreadpoolIo:IO:0x0057c810
WSARecv:s:0x0000043c  Len:0 len:1024
StartThreadpoolIo:IO:0x0053c870
WSASend:s:0x000004a4  Len:0 len:166
StartThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x00539eb0
CancelThreadpoolIo:IO:0x0053c870
WSARecv:s:0x000004b0  Len:0 len:1024
WSASend:s:0x00000480  Len:0 len:166
CancelThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x0053c870
StartThreadpoolIo:IO:0x0057c810
WSARecv:s:0x000004a4  Len:0 len:3072
WSASend:s:0x000004b0  Len:0 len:358
CancelThreadpoolIo:IO:0x0053c870
CancelThreadpoolIo:IO:0x0057c810
CancelThreadpoolIo:IO:0x00539eb0
StartThreadpoolIo:IO:0x0057c810
StartThreadpoolIo:IO:0x00539eb0
WSARecv:s:0x00000480  Len:0 len:3072
CancelThreadpoolIo:IO:0x00539eb0
WSARecv:s:0x000004b0  Len:0 len:3072
CancelThreadpoolIo:IO:0x0057c810
recv:s:0x000004b0  Len:-1
recv:s:0x0000049c  Len:-1
recv:s:0x000004a4  Len:-1
recv:s:0x00000480  Len:-1
recv:s:0x000004a8  Len:-1
MyPTPFun: IO:0x0052f688 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x0052f688
WSARecv:s:0x0000043c  Len:0 len:4096
CancelThreadpoolIo:IO:0x0052f688
recv:s:0x0000043c  Len:-1
recv:s:0x00000484  Len:-1
StartThreadpoolIo:IO:0x00536db8
WSASend:s:0x00000484  Len:0 len:721
CancelThreadpoolIo:IO:0x00536db8
StartThreadpoolIo:IO:0x00536db8
recv:s:0x00000464  Len:-1
WSARecv:s:0x00000484  Len:0 len:1024
recv:s:0x00000458  Len:-1
StartThreadpoolIo:IO:0x00527298
StartThreadpoolIo:IO:0x0050db40
recv:s:0x00000448  Len:-1
WSASend:s:0x00000464  Len:0 len:441
StartThreadpoolIo:IO:0x0052f7a8
CancelThreadpoolIo:IO:0x00527298
StartThreadpoolIo:IO:0x00527298
WSASend:s:0x00000448  Len:0 len:867
WSARecv:s:0x00000464  Len:0 len:1024
WSASend:s:0x00000458  Len:0 len:412
CancelThreadpoolIo:IO:0x0052f7a8
StartThreadpoolIo:IO:0x0052f7a8
MyPTPFun: IO:0x00536db8 FUN:0x7601dfb0
WSARecv:s:0x00000448  Len:0 len:1024
CancelThreadpoolIo:IO:0x0050db40
StartThreadpoolIo:IO:0x0050db40
MyPTPFun: IO:0x0052f7a8 FUN:0x7601dfb0
shutdown:s:0x00000484
WSARecv:s:0x00000458  Len:0 len:1024
recv:s:0x00000448  Len:-1
closesocket:s:0x00000484
CancelThreadpoolIo:IO:0x0050db40
CloseThreadpoolIo:IO:0x00536db8
recv:s:0x00000458  Len:-1
MyPTPFun: IO:0x00527298 FUN:0x7601dfb0
StartThreadpoolIo:IO:0x00527298
WSARecv:s:0x00000464  Len:0 len:4096
CancelThreadpoolIo:IO:0x00527298
shutdown:s:0x00000464
closesocket:s:0x00000464
CloseThreadpoolIo:IO:0x00527298
recv:s:0x00000494  Len:-1
StartThreadpoolIo:IO:0x00539168
WSASend:s:0x00000494  Len:0 len:405
CancelThreadpoolIo:IO:0x00539168
StartThreadpoolIo:IO:0x00539168
WSARecv:s:0x00000494  Len:0 len:1024
WSASocketW:s:0x0000047c
socket:s:0x0000047c
closesocket:s:0x0000047c
WSASocketW:s:0x00000478
socket:s:0x00000478
closesocket:s:0x00000478
MyPTPFun: IO:0x00539168 FUN:0x7601dfb0
recv:s:0x00000494  Len:-1
WSASocketW:s:0x00000bb0
WSASocketW:s:0x00000bd4
socket:s:0x00000bb0
socket:s:0x00000bd4
closesocket:s:0x00000bb0
closesocket:s:0x00000bd4
WSASocketW:s:0x00000bd4
socket:s:0x00000bd4
closesocket:s:0x00000bd4
recv:s:0x00000498  Len:-1
StartThreadpoolIo:IO:0x005383d8
WSASend:s:0x00000498  Len:0 len:709
CancelThreadpoolIo:IO:0x005383d8
StartThreadpoolIo:IO:0x005383d8
WSARecv:s:0x00000498  Len:0 len:1024
MyPTPFun: IO:0x005383d8 FUN:0x7601dfb0
shutdown:s:0x00000498
closesocket:s:0x00000498
CloseThreadpoolIo:IO:0x005383d8
WSASocketW:s:0x00000b00
socket:s:0x00000b00
closesocket:s:0x00000b00
WSASocketW:s:0x000006f8
socket:s:0x000006f8
closesocket:s:0x000006f8

uj5u.com熱心網友回復:

hook ntdeviceiocontrolfile

uj5u.com熱心網友回復:

hook ntdeviceiocontrolfile 時,設定斷點運行正常,沒設斷點運行是亂碼,

uj5u.com熱心網友回復:

亂碼的都是HTTPS資料吧,https資料是加密的,肯定是亂碼

uj5u.com熱心網友回復:

亂碼不是加密的原因,是跟本沒有正確的資料, hook ntdeviceiocontrolfile 與hook WSARecv WSASend 效果一樣的,進WSARecv 必定進了ntdeviceiocontrolfile ,WSARecv 回傳時,ntdeviceiocontrolfile已回傳,ntdeviceiocontrolfile與WSARecv 一樣,解決不了完成埠的問題,在WSARecv呼叫之手與MyPTPFun回呼之前,還有什么方法取數呢?使用的是CreateThreadpoolIo這一套完成埠的API,在LPWSAOVERLAPPED的結構中lpOverlapped>hEvent=null, WSARecv  的lpCompletionRoutine引數為null.

uj5u.com熱心網友回復:

搜“The Dark Side of Winsock”

uj5u.com熱心網友回復:

是不是你沒處理及時哦

uj5u.com熱心網友回復:

已自已搞定了,Hook  NtDeviceIoControlFile這個解決不了問這個異步問題,最終是資料快取的位置問題,HOOK CancelThreadpoolIo,WSARecv,WSASend,CreateThreadpoolIo,在WSARecv里只能保存WSABUF 結構中的buf,WSABUF會在系統處理資料的程序中被釋放,但結構中的buf在回呼或CancelThreadpoolIo中是有效的。有效的資料長度是LPWSAOVERLAPPED 結構中的InternalHigh,這校就OK了,在CreateThreadpoolIo中關聯SOCKET與IO,還有保存與替換回呼,在WSARecv與WSASend,關聯SOCKET與資料快取,還有LPWSAOVERLAPPED ,在CancelThreadpoolIo或回呼中取資料;CancelThreadpoolIo是用IO取到SOCKET,再取到相關的LPWSAOVERLAPPED 結構中的InternalHigh與WSABUF 結構中的buf,注意一般WSABUF 會釋放了,先前應該只能保存WSABUF 結構中的buf指標,如果在回呼中,回呼會收到IO與LPWSAOVERLAPPED ,用IO關聯的SOCKET就可以取到buf了,如果CancelThreadpoolIo被呼叫就不會再呼叫回呼的,回呼被呼叫就不會呼叫CancelThreadpoolIo,注意回呼取好資料后一定在呼叫原回呼。這校就能完美解決IE7hook socket了

uj5u.com熱心網友回復:

先前有人說在WSASend或WSARecv中如果LPWSAOVERLAPPED 結構中的InternalHigh結構中有長度就可以取數,這個不是很穩定,回呼或CancelThreadpoolIo中取數一好像沒漏過資料,注意的是不能直接保存WSABUF 指標,這個結構會在回呼或CancelThreadpoolIo之前釋放,但結構中的buf 沒釋放,可以取數。

uj5u.com熱心網友回復:

設定IE6-IE11兼容性問題不會改變內核的網路資料機制,只改變界面展示。網路層的編程結構只與版本有關,IE8沒用完成埠,IE9以上的用了完成埠。IE9與之前的socket機制完全不同的,在建立連接時ie8之前的socket會收到1位元組的握手資料,在ie9完成埠,連接是用了connectEx,有時會收了握手的recv資料,send資料一直沒收到過。這知是什么原因,ie8沒用完成埠與connectex,用的recv\send 或WSARecv與WSASend,都會收到完整的握手呼叫,在ie9之后,能有進收到recv的握手資料。send就沒收到過,不知是什么原因!!!!!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76855.html

標籤:網絡編程

上一篇:在工程里添加了一個新的類(繼承view),但在類里的ondraw里寫了代碼卻畫不出圖來

下一篇:航空姿態儀表

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more