Non capiscto un bit di C e C++ ...poi quando ci si mettono gli operatori matematici, le funzioni logiche, bitwise, shifting e l'uomo ragno, ne capisco pure meno.
Chi mi "traduce" questa routine, rendendo "compresibile" (a me) ...in VB6 o VB.NET o comunque in qualcosa che posso capire:
-
#if 0
dwCrc = *((PDWORD)(pMem+0x00c)); /* reverse crc to find seed */
for(pLow = pMem+0x4cb; pLow >= pMem+0x10; pLow--){
for(dw = 0; dw < 8; dw++){
if(dwCrc & 0x00000001){
dwCrc = (dwCrc>>1)^0x82608edb;}
else{
dwCrc = dwCrc>>1;}}
dwCrc ^= ((DWORD)*pLow)<<24;}
#endif
dwCrc = 0xe0c04495; /* generate crc crude way */
for(pLow = pMem+0x10; pLow <= pMem+0x4cb; pLow++){
dwCrc ^= ((DWORD)*pLow)<<24;
for(dw = 0; dw < 8; dw++){
if(dwCrc & 0x80000000){
dwCrc = (dwCrc<<1)^0x04c11db7;}
else{
dwCrc = (dwCrc<<1);}}}
*((PDWORD)(pMem+0x00c)) = dwCrc;
-
Per info: serve a calcolare la checksum di un file (inverse CRC-32).
pMem e' il puntatore a inizio file in memoria. Non credo che servano altre info (spero).
Grazie.