FASM: Код (Text): mov esi,длина_строки sub esi,количество_удаляемых_с_конца add esi,строка mov byte [esi],0
nSymbolsCount = 3; // число удаляемых символов (строка должна быть длиннее) с-строки: szString[lstrlen(szString)-nSymbolsCount] = 0; pascal-строки: szString[0] -= nSymbolsCount;
гы-гы Код (Text): mov esi,длина_строки cmp esi,количество_удаляемых_с_конца jb @@error sub esi,количество_удаляемых_с_конца add esi,строка mov byte [esi],0 jmp @@continue @@error: обработка ошибок @@continue:
а лучше так: Код (Text): mov esi,длина_строки sub esi,количество_удаляемых_с_конца jb @@error add esi,строка mov byte [esi],0 jmp @@continue @@error: обработка ошибок @@continue:
а еще лучше: class StringShortener { public: StringShortener(LPSTR lpString) void CutString(int nLength); private: LPSTR lpString; }; StringShortener::StringShortener(LPSTR lpInitString) { this->lpString= lpString; } void StringShortener::CutString(int nLength) { int length= strlen(lpString); if(length<nLength) throw _com_error(код ошибки, NULL, FALSE); lpString[length-nLength]= 0; } ... try { StringShortener str(szString); str.CutString(число_символов); } catch(_com_error err) { обработка ошибок }
invoke strlen, offset string sub eax, число символов invoke strncpy, offset string, offset string, eax
FASM: Код (Text): num = 5; Number of symbols for deleting string db 'stringasdf',0 xor ecx,ecx dec ecx mov edi,string xor al,al repne scasb sub edi,num mov byte ptr edi,al
cpp_and_wasm Код (Text): mov esi,длина_строки sub esi,количество_удаляемых_с_конца add esi,строка mov byte [esi],0 может так лучше? : Код (Text): lea esi,[длина_строки-количество_удаляемых_с_конца+строка] mov byte [esi],0
Nouzui можно это через асимптотики решить трижды интегрируя по натуральному логарифму в квадрате, а потом находим корни в комплексной плоскости с помощью метода рунге-кутта, даллее рисуем пыль пуассона в гильбертовом пространстве через функции dx10 - только в windows vista, моделируя при этом дуссельдорфовый пролив маера-котеса, чтобы получить окончательное решение надо написать эмулятор двухпроцессорныой машины, потому что просто так не потянет тачка и впихнуть это на конвеер через таблицу виртуальных функций ватком компилера. потом брутфорсим порт 31337 до получения заветной цифры и подключаем нейронку через эллиптическое гамирование по коду 681111h. стало быть метаморфмим это потом мисфалем с самыми сильными настройками и даем на скормление avp. он и выведем нам нужную строку в своем сообщении об обнаружении вируса.