HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 22.09.2007, 23:42
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
значит можно сделать вывод, что в моей проге есть какие-то функции, которые требуют CRT, но если ее добавть размер охрененно возрастет. получается, надо обрезать эти функции. так?
Угу, если бы у всех CRT-символов были аналоги в API windows, то нафига бы она была нужна. Не надо проводить четкую аналогию между CRT и API, её нет. То, что у strlen() есть аналог lstrlen() в kernel32.dll считайте чистой случайностью.

Вообще посмотри экспорт ntdll - найдешь очень много ф-ий типа strstr().
Ну можно вручную переписать много чего.
Я конечно хотел понтануться и кинуть листинг на осенблере всех этих ф-ий, но потом подумал что заебался понтоваться. Я и так крутой ИМХО.
Код:
bool lstrncmp( char *s1, char *s2, size_t iMaxLen ) {
	for (size_t i = 0; i < iMaxLen; i++) {
		if (!s1[i] || !s2[i]) return true;
		if (s1[i] != s2[i]) return true;
	}
	return false;
}

void lmemset( void *dst, char v, size_t s ) {
	for (size_t i = 0; i < s; i++) {
		((char*)dst)[i] = v;
	}
}

void lmemcpy( void *dst, void *src, size_t s ) {
	for (size_t i = 0; i < s; i++) {
		((char*)dst)[i] = ((char*)src)[i];
	}
}

bool lmemcmp( void *p1, void *p2, size_t s ) {
	for (size_t i = 0; i < s; i++) {
		if (((char*)p1)[i] != ((char*)p2)[i]) return true;
	}
	return false;
}

void *lmalloc( size_t s ) {
	return HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, s );
}

void lfree( void *p ) {
	HeapFree( GetProcessHeap(), 0, p );
}

void* __cdecl operator new( size_t s ) {
	return lmalloc( s );
}

void __cdecl operator delete( void *p ) {
	lfree( p );
}

Последний раз редактировалось KEZ; 22.09.2007 в 23:52..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ