BYTE *FullProjectIdent[]; В памяти указатели размером DWORD. Код (Text): int i; asm cli for( i = 0; FullProjectIdent[ i ] != NULL; i++ ) ; // SysOutLineOwn( 1, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, // (i <= 0) ? SysProjectIdent : FullProjectIdent[ i - 1 ] ); if(i > 0) { SysDUitoa(Buff, (DWORD)i); SysOutLineOwn( 15, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); //i = 0x11 SysDUitoa(Buff, (DWORD)FullProjectIdent[i - 1]); SysOutLineOwn( 16, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); SysDUitoa(Buff, (DWORD)&FullProjectIdent[i - 1]); SysOutLineOwn( 17, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); SysDUitoa(Buff, (DWORD)FullProjectIdent[16]); SysOutLineOwn( 18, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); SysDUitoa(Buff, (DWORD)&FullProjectIdent[16]); SysOutLineOwn( 19, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); SysOutLineOwn( 20, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, (BYTE *)FullProjectIdent[0x11 - 1] ); //SysOutLineOwn( 21, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, (BYTE *)FullProjectIdent[i - 1] ); SysDUitoa(Buff, (DWORD)i); SysOutLineOwn( 22, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, Buff ); //i = 0x11 } asm sti Код (Text): ; ; SysOutLineOwn( 20, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, (BYTE *)FullProjectIdent[0x11 - 1] ); ; push dword ptr [_FullProjectIdent+64] push 7 push 0 push 18 call _SysOutLineOwn add esp,16 ; ; SysOutLineOwn( 1, 0, SYSCOLFON_BLACK | SYSCOLTXT_GRAY, (BYTE *)FullProjectIdent[i - 1] ); ; push dword ptr [_FullProjectIdent-4+4*ebx] push 7 push 0 push 19 call _SysOutLineOwn add esp,16 При использовании в функции SysOutLineOwn адреса в FullProjectIdent[i - 1] ловим нулевой указатель. Я непонимаю, может невижу чего-то очевидного SysDUitoa(Buff, (DWORD)FullProjectIdent[i - 1]); тоже почему-то показывает нули. Адреса &FullProjectIdent[16] и &FullProjectIdent[i - 1] различаются на 17 * 4. Код (Text): ; ; for( i = 0; FullProjectIdent[ i ] != NULL; i++ ) ; ; xor ebx,ebx jmp short @203 @202: @204: inc ebx @203: cmp dword ptr [_FullProjectIdent+4*ebx],0 jne short @202