ппоршень
-
Автор темы
- #1
Есть функция которая ищет целочисленные значения в памяти процесса. Её код:
Она лишь занимается тем что перебирает адреса от 0x00000000 до 0xFFFFFFFF (x86), но конечно по адресу 0x0000000 ничего не будет аллокнуто, поэтому вылетит EXCEPTION_ACCESS_VIOLATION. Мне нужно игнорировать это исключение и идти дальше по циклу. Но обычный try catch в C++ его не ловит, а с __try __except код просто не компилируется из за ошибки C2712. Как контрить EXCEPTION_ACCESS_VIOLATION в этом цикле?
C++:
template <class type> _inline auto find( type buffer, umemory_pointer start = vmsearch_start, umemory_pointer end = vmsearch_end ) -> std::vector<umemory_pointer> {
std::vector<umemory_pointer> results;
for( ; start<end; start += sizeof buffer ) {
try {
if( ( *( type * ) ( start ) )==buffer ) {
results.push_back( start );
}
}
catch ( std::exception ) {
continue;
}
}
return results;
}