Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инстанцировать шаблон литералом 
:(
    Опции темы
GoldFinch
Дата 10.3.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



возможно ли инстанцировать шаблон строковым литералом в каком-нибудь компиляторе, или единственный выход - цеплять свой препроцессор который менял бы "Abcd" на ченить типа 'A','b','c','d' ?
PM MAIL ICQ   Вверх
mes
Дата 11.3.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Можно вместо строки  использовать int как 'ABCD'. Однако это  не стандартное средство.. у gcc  работает, а у VS неизвестно.


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 11.3.2009, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Код

enum
{
    ABCD
};

template <int Val>
class MyClass;

template<>
class MyClass<ABCD>
{
....
};


Добавлено через 2 минуты и 39 секунд
в шаблон конечно-же можно передать указатель, но он должен быть известен на этапе компиляции, поэтому придется заранее создавать рад строковых констант, что в принципе то-же самое что и мой пример выше...
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 11.3.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



вобщем я хочу сделать такую штуку чтобы конструкция
hash<"qwertyui">::ret
выдавала хеш "qwertyui"

идея с int хороша, но только разве что с __int128 а еще лучше с __int256
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



делай, это будет работать

Добавлено через 13 минут и 51 секунду
Цитата(GoldFinch @  11.3.2009,  00:08 Найти цитируемый пост)
возможно ли инстанцировать шаблон строковым литералом в каком-нибудь компиляторе

в любом

Это сообщение отредактировал(а) vinter - 11.3.2009, 09:27


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 11.3.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



vinter, и как же?
PM MAIL ICQ   Вверх
Lazin
Дата 11.3.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(vinter @  11.3.2009,  09:16 Найти цитируемый пост)
делай, это будет работать

не будет
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 11.3.2009, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



с int все ок, а вот с __int64 не получается, видимо потому что конпелятор 32разрядный и такие "большие" константы он не переваривает
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



да, с классом я протупил. Можно сделать это ф-ией

Добавлено через 10 минут и 26 секунд
или вот так
Код

template <typename T = std::string>
struct A
{
    T str;
    A(T str_): str(str_)
    {}
    std::string operator()()
    {
        return str + " hash\n";
    }
};

int main()
{
    std::cout << A<>("Hash")();
    system ("pause");
}



--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 11.3.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



vinter, надо во время компиляции
PM MAIL ICQ   Вверх
Lazin
Дата 11.3.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(GoldFinch @  11.3.2009,  11:27 Найти цитируемый пост)
надо во время компиляции

а зачем? я usecase такого класса(ф-ии) не могу придумать  smile 
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 11.3.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Lazin, конкретно для хешей - импорт функций по хешам их имен
для уменьшения размера бинарника, сокрытия имен импортируемых функций
помогает от реверсирования

Добавлено через 5 минут и 8 секунд
пока это выглядит как-то так
Код
#include <iostream>
using namespace std;

enum { hash_mult = 5 };

template <int S,int X>
struct hash_int {
    enum { M = ::hash_mult };
    enum { ret = ((((S*M+(X>>24)&0xFF)*M+(X>>16)&0xFF)*M+(X>>8)&0xFF)*M+(X)&0xFF)&0xFFFFFFFF };
};

template <int s1,int s2=0,int s3=0,int s4=0,int s5=0,int s6=0,int s7=0,int s8=0>
struct hash {
    typedef hash<s2,s3,s4,s5,s6,s7,0> hash_next;
    enum { ret=hash_int<hash_next::ret,s1>::ret };
};

template <>
struct hash<0> {
    enum { ret=0 };
};

int main() 
{
    int h= hash<'Load','Libr','aryA'>::ret; //hash of 'LoadLibraryA'
    cout << h << endl;
    return 0;
};

PM MAIL ICQ   Вверх
Cтpaнник
Дата 11.3.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 12.10.2008
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



1. При такой (самостоятельной) реализации хеш-функции, какова вероятность коллизии?
2. Почему бы не использовать проверенные хеш-функции типа MD5, CRC32, etc.?
PM MAIL   Вверх
GoldFinch
Дата 11.3.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Cтpaнник, у меня есть нехорошее ощущение что компилятор С++ несколько тормознут чтобы за разумное время выполнять метапрограммы содержащие сложные алгоритмы типа md5 а то и crc32

а наличие коллизий лучше проверять заранее, отдельной утилитой
PM MAIL ICQ   Вверх
GoldFinch
Дата 11.3.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



версия с отдельными символами, и правильным порядком подсчета хеша - от 1го символа к последнему
Код

#include <iostream>
using namespace std;

enum { hash_mult = 5 };

template <char s1,
    char s2=0,
    char s3=0,
    char s4=0,
    char s5=0,
    char s6=0,
    char s7=0,
    char s8=0,
    char s9=0,
    char s10=0,
    char s11=0,
    char s12=0,
    char s13=0,
    char s14=0,
    char s15=0,
    char s16=0>
struct hash {
    typedef hash<0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15> hash_next;
    enum { ret =  s16 ? s16 + ::hash_mult * hash_next::ret : hash_next::ret };
};

template <>
struct hash<0> {
    enum { ret=0 };
};

int main() 
{ return hash<'1','2','3'>::ret; }


Добавлено через 5 минут и 47 секунд
версия без тринарного оператора ?:
Код

#include <iostream>
using namespace std;

enum { hash_mult = 5 };

template <char s1,
    char s2=0,
    char s3=0,
    char s4=0,
    char s5=0,
    char s6=0,
    char s7=0,
    char s8=0,
    char s9=0,
    char s10=0,
    char s11=0,
    char s12=0,
    char s13=0,
    char s14=0,
    char s15=0,
    char s16=0>
struct hash {
    typedef hash<0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15> hash_next;
    enum { ret =  s16 + ::hash_mult * hash_next::ret };
};

template <char s1,
    char s2,
    char s3,
    char s4,
    char s5,
    char s6,
    char s7,
    char s8,
    char s9,
    char s10,
    char s11,
    char s12,
    char s13,
    char s14,
    char s15>
struct hash<s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,0> {
    typedef hash<0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15> hash_next;
    enum { ret =  hash_next::ret };
};

template <>
struct hash<0> {
    enum { ret=0 };
};

int main() 
{ return hash<'1','2','3','4','5','6','7'>::ret; }



как лучше, с тринарным оператором условия, или без него?
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(GoldFinch @  11.3.2009,  16:01 Найти цитируемый пост)
версия без тринарного оператора

тернарный

Цитата(GoldFinch @  11.3.2009,  16:01 Найти цитируемый пост)
как лучше, с тринарным оператором условия, или без него?

по мне, так в обоих случаях практология какая-то...


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 11.3.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



vinter, ты знаешь вариант лучше? так напиши...
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



GoldFinch, может просто другой подход выбрать? Решений всегда как миниму 2, а уж подходов... 


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 11.3.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



vinter, а какой другой? не писать на С++ ?
PM MAIL ICQ   Вверх
vinter
Дата 11.3.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



GoldFinch, это уже думать надо, если ты обрисуешь задачу полностью, может кто и подскажет чего. А не видя задачи, тяжело, что-то советовать


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 11.3.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



общая задача - разобраться с метапрограммированием на С++
частная задача - обработка строковых констант
еще более частная задача - реализация динамического импорта функции по ее хешу, рассчитанному статически

PM MAIL ICQ   Вверх
Lazin
Дата 11.3.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а как можно импортировать ф-ю по ее хэшу?
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 11.3.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Lazin, также как и по имени, поиском нужной функции в таблице имен экспорта, только вместо сравнения имен сравниваются хеши
собственно это уже оффтоп, посмотрите как реализован импорт в протекторах\упаковщиках

Это сообщение отредактировал(а) GoldFinch - 11.3.2009, 19:52
PM MAIL ICQ   Вверх
math64
Дата 12.3.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



По моему, в данном конкретном случае лучше написать программу ищущую код1 типа
Код

int i = $hash("String");

и заменяющий его на код2:
Код

int i = /*$hash("String")*/ 1234;

Можно также искать уже преобразованный код2 и пересчитывать в нём константы.

PM   Вверх
Lazin
Дата 12.3.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а можно сделать еще проще, написать скриптик, который будет принимать на вход файл с именами ф-ий, и преобразовывать его в *.h файл, в котором все это лежит в виде констант, либо в виде дефайнов, в принципе работы на полчаса =)

Код

WriteFileA
CreateFileA
....


Код

const size_t hash_WriteFileA = 0xcdcdcdcd;
const size_t hash_CreateFileA = 0xfdfdfdfd;
....


Добавлено @ 10:35
в проект нужно будет просто добавить custom build step, который-бы вызывал скрипт и все

Это сообщение отредактировал(а) Lazin - 12.3.2009, 10:35
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 12.3.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



это подпадает под категорию "не писать на С++"
PM MAIL ICQ   Вверх
math64
Дата 12.3.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Этот "скрипт" можно написать и на C++, причём данные, которые нужно обрабатывать можно разместить не в отдельном файле, а в файле С++, который может входить как в основной проект, как и в "скрипт"
Код

const char* funcNames[] = {
"WriteFileA",
"CreateFileA",
NULL
};


PM   Вверх
GoldFinch
Дата 12.3.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



math64, это называется front-end и никак не относится к языку
это хорошее решение если писать для себя и 1 раз, в остальных случаях это порождает множество проблем
PM MAIL ICQ   Вверх
Lazin
Дата 12.3.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(GoldFinch @  12.3.2009,  12:55 Найти цитируемый пост)
это хорошее решение если писать для себя и 1 раз, в остальных случаях это порождает множество проблем 

если ты используешь нормальную билд систему, то это не проблема, и используется такой подход часто, например во время генерации заголовочных файлов по библиотекам типов =)

Добавлено через 9 минут и 54 секунды
можно конечно реализовать все на с++, например как-нибудь так:

Код

namespace libs
{
    size_t hash_fn(const char* name)
    {
        boost::hash<const char*> hash_fn;
        return hash_fn(name);
    }


    struct WriteFileA
    {
        static const char* name;
        static const size_t hash;
    };
    const size_t WriteFileA::hash = hash_fn(WriteFileA::name);
    const char* WriteFileA::name = "WriteFileA";
}

PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 12.3.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



примерно вот так выглядит импорт функции по хешу, если кто не видел
Код

...

int CalculateHash(char *str) {
    int h=0;
    for(;*str;str++) {
        h= *str + h * ::hash_mult;
    };
    return h;
};
FARPROC GetProcAddrByHash(HMODULE hModule,int Hash) {
    int base=(int)hModule;
    PIMAGE_EXPORT_DIRECTORY pExp = PIMAGE_EXPORT_DIRECTORY(base+PIMAGE_NT_HEADERS(base+PIMAGE_DOS_HEADER(base)->e_lfanew)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
    int *pNamesTable = (int*)(base+pExp->AddressOfNames);
    short *pOrdsTable = (short *)(base+pExp->AddressOfNameOrdinals);
    while ( CalculateHash((char*)(base+*pNamesTable))!=Hash) {
        pNamesTable++;
        pOrdsTable++;
    };    
    return FARPROC(base+*((int*)(base+pExp->AddressOfFunctions+*pOrdsTable*4)));
};

int main() { 
    HMODULE hKernel=GetModuleHandleA("kernel32.dll");
    cout << GetProcAddrByHash(hKernel,hash<'Load','Libr','aryA'>::ret) << endl;
    cout << GetProcAddress(hKernel,"LoadLibraryA") << endl;
...

PM MAIL ICQ   Вверх
Cтpaнник
Дата 12.3.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 12.10.2008
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



Ну хорошо. Импортируешь функции не по имени, а по хешу. Круто. Молодец. Что дальше? Какое практическое применение?
PM MAIL   Вверх
GoldFinch
Дата 12.3.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Cтpaнник, шеллкодесы на С++ писать, мало ли бывает применений, они есть ты просто их не знаешь %)
PM MAIL ICQ   Вверх
Lazin
Дата 12.3.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



GoldFinch, у тебя ошибка в алгоритме smile 
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 12.3.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Lazin, хде? примеры обрабатывает нормально...
PM MAIL ICQ   Вверх
Lazin
Дата 12.3.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



там возможны коллизии, хэш ф-ия какая-то странная smile
к тому-же если это для того, что-бы запутать того, кто будет реверсить код, то нужно учесть, что код хэш ф-ии есть в коде программы и найти, какой из ф-ий какой код будет соответсвовать не трудно))
в общем странно это все как-то...
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 12.3.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Lazin, для большинства случаев это работает
а так это только PoC, типа 'hello world'
PM MAIL ICQ   Вверх
Cтpaнник
Дата 13.3.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 12.10.2008
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



Для большинства случаев никто даже не будет реверсить код, дабы узнать, а какой же такой таинственной функции соответствует хеш 0x12345678. Просто напустят на прогу API-шпиона, и вуаля.

PM MAIL   Вверх
GoldFinch
Дата 13.3.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Cтpaнник, апи шпион, отладчик и другие средства динамического анализа могут вообще ничего не показать, если в проге предусмотрена антиотладка или не наступили определенные условия, или покажут тебе факт вызова АПИ постфактум, когда это будет уже неинтересно
да и вообще, не скрытием символьных имен единым...
PM MAIL ICQ   Вверх
mes
Дата 13.3.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(GoldFinch @  13.3.2009,  11:44 Найти цитируемый пост)
апи шпион, отладчик и другие средства динамического анализа могут вообще ничего не показать, если в проге предусмотрена антиотладка или не наступили определенные условия, или покажут тебе факт вызова АПИ постфактум, когда это будет уже неинтересно
да и вообще, не скрытием символьных имен единым... 

 smile 
Письмо из центра до Штиpлица не дошло... Он прочитал его еще раз. Опять не дошло... Пришлось читать в третий раз.


--------------------
PM MAIL WWW   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0894 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.