На форуме тусуются люди разного уровня, и разных мнений.. Относительно затеи с импортом - делается проще навесным пакером. Статья для ][ годная, но тут верноятно люди хотят видеть что-то новое.
Клерк, ты опять сумел выбраться из смирительной рубашки, пока санитары не видели? Когда у тебя был секс последний раз?
так я же не против мне интересно любое мнение по делу и к этой поделке я отношусь не более чем к поделке я против тупого таких людей хочется послать копибара вместе с их мнением
кстати тут банят за мат... но это так... по секрету... дело в том, что ты нагенерил быдло код, который я назвал быдлокодом... так какие претензии ко мне... он работает только под x86 архитектуру (хотя поддержку x64 можно было бы добавить очень легко, если бы ты сам написал ту асм-вставку, не содрал ее из какого-то другого быдлокода)... он тут же попадет в сигнатуры благодаря нединамическим хешу (пересчитывать хеши можно на этапе компиляции, а в качестве зерна генератора случайных чисел времени компиляции можно использовать дату и время начала компиляции, хотя надо подумать, можно ли это реализовать на студии)... он с совершенно никому не нужными ассемблерными вставками (принуждаешь кидисов использовать код as-is, тк они ничего не поймут), и совершенно никому не нужной там зависимостью от буста (не нужно определять тип функции, зачем? достаточно упаковать вызов в конструктор класса и сделать шаблонный каст)... ну и так далее в глабальном плане, можно еще быдломеста конкретно по коду поискать, если ты желаешь канеш))))
Rel мудхах == глупец на санскрите и от него происходящих чел написал прогу. не нравится? - напишите лучше. уже написали? - показывайте. не надо вам такое? тогда нафига весь этот треп? и это, прекращайте троллить. где, например, обещанная возможность запустить нужную мне .нет прогу на андроиде? или вы уже не решеточник, а плюсовик со смайликом?
http://lurkmore.ru/Сперва_добейся и да, у меня есть самописная библиотека для динамического импорта, и да, она божественна))) но извиняйте, это все жуткий привад))) так ты до сих пор не поставил себе моно на свой многострадальный наладонник? бедолага))) советую погуглить решение))) за свою жизнь написал наверное парочку прог на решетке, остальное на плюсах... со смайликом))) не, ну ладно... раз ты считаешь, что мне необходимо это сделать...
во первых я не планировал никакую x64 а во вторых странная у тебя мания обвинять других в том что они дернули код без доказательств это намного больше говорит о тебе как о не чистом наруку человеке и к тому же не отвечающему за слова честно мне очень интересно посмотреть твою не быдло реализацию и оценить а если ты ее не предоставиш значит твои предъявы беспонтовые и статус nиздaбoлa от тебя уже не отлипнет как ты сам понимаеш а что касается меня то я на 99% процентов уверен что ты беспонтовый nиздaбол но все же предоставив код ты сможеш это опровегнуть как говорится языком чесать не мешки ворочать давай код
я как бы и не хочу спорить с тем, что я "nиздaбoл", но может помогу тебе чем)))) ну скажем то, что касается конкретно этого коммента: вот код с использованием шаблонов с переменным числом параметров: Код (Text): // Родитель, реализующий каст к произвольному типу struct ApiParent { template <typename RetType> operator RetType() { return (RetType)this->Result; } protected: size_t Result; }; // для stdcall, такие же наследники для cdecl и fastcall template <uint32_t Mod, uint32_t Hash, size_t ErrorRet> struct Stdcall : public ApiParent { template <typename ... Args> Stdcall(Args ... args) { typedef size_t (__attribute__((stdcall))* PFunc)(Args ...); PFunc pFunc = (PFunc)DlSym(Mod, Hash); if(pFunc != NULL) { this->Result = pFunc(args ...); } else { this->Result = ErrorRet; } } }; // Макрос для удобного вызова функции (STRHASH - хеш строки времени компиляции) STDCALL(ModName, FuncName, ErrorRet) Stdcall<STRHASH(ModName), STRHASH(FuncName), ErrorRet> // Вызов соответственно выглядит так: STDCALL("kernel32.dll", "HeapAlloc", NULL)(hHeap, HEAP_ZERO_MEMORY, 1024); // Или же можно в хедере сделать: #if USE_DYNAMIC_IMPORT #undef HeapAlloc #define HeapAlloc STDCALL("kernel32.dll", "HeapAlloc", NULL) #endif // И потом пользовать HeapAlloc без изменения кода как бы тоже далеко не идеальное решение, и критические комментарии приветствуются, может я каких косяков не увидел еще в данной реализации... конкретно, мож кто подскажет, как конвенкцию вызова вынести в параметры шаблона без повтора кода, ну и без всяких дурацких бустов))) а то как то не очень клево иметь STDCALL, CDECL и FASTCALL макросы))) ну это очень плохо))) а по поводу копипаста кода, это канеш бездоказательное и не обвинение ни разу, тк в нашем мире все далеко не по GNU лицензии... но ради интереса, ты можешь рассказать, как ты от fs перешел к структуре содержащей базовый адрес и имя библиотеки? то есть какие именно структуры винды там задействованы, как они называются, или как ты их называешь? только чур не гуглить))))
ну вот и я говорю об этом тоесть по сути у тебя нет рабочего решения только мысли но при этом ты ведеш себя так как будто оно у тебя есть и ты невьебенный программист а я быдлокодер да еще и обвиняеш без доказательств не правильно это мысли твои ничего не стоят без рабочего решения потому как когда дело дойдет до реализации встретиш миллион невидимых ранее граблей и вот если сделаеш тогда приходи поговорим предметно а пока твои закидоны просто смешны как будто ты сделал что то и у тебя получилось это лучше
чего? это фрагмент рабочего решения... так я же тебе предложил, описать путь от fs к базе данных загрузщика, чтобы развеять все сомнения о копипасте... и кстати для поддержки x64 достаточно поменять fs на gs и пересчитать смещения (отладчиком или по хедерам)... ну и канеш регистры использовать 64-битные))) какие закидоны? я только что дал тебе идею, как улучшить твой код... мог бы взгянуть и спасибо сказать...
ты видать или туповат или прикидываешся дибилом когда я говорю рабочее решение а ты приводиш огрызок пока не будет рабочего решения чтобы взял подключил и сразу мог оценить твои претензии безосновательны и ты простое трепло или ты и правда дибил и не понимаеш чем отличается огрызок от рабочего решения ?
пуффф... кароч ладно... вот ты не понимаешь, что мне ну наxep не нужно там что-то тебе доказывать... ни тебе, ни кому либо еще... получается, что я привел тебе фрагмент кода зря, тк ты ничему с него ничему не научился... рассказал, как добавить поддержку x64 зря, тк ты не знаешь, как ты сделал x86-вариант и сделать аналогично 64-битный вариант не сможешь... подход "взял и подключил" - это подход школоты... что толку с кода, если ты его не понимаешь? еще одна тупая малварь не о чем... проблема "малварь-индустрии" в том, что шиткодеры дают код другим шиткодерам и в этом процессе код никак не улучшается))) ну это уже философия... если хочешь конкретно говорить о недостатках своего кода, то давай говорить... без мата, без агрессии и ради Бога с использованием знаков препинания))) ЗЫ ответ на вопрос "как перейти от fs к базе данных загрузщика": из fs ты получаешь указатель на TEB: http://undocumented.ntinternals.net/UserMode/Undocumented Functions/NT Objects/Thread/TEB.html из TEB ты получаешь указатель на PEB: http://undocumented.ntinternals.net/UserMode/Undocumented Functions/NT Objects/Process/PEB.html из PEB ты получаешь указатель на PEB_LDR_DATA: http://undocumented.ntinternals.net/UserMode/Structures/PEB_LDR_DATA.html дальше гуляешь по одному из списков LDR_MODULE: http://undocumented.ntinternals.net/UserMode/Structures/LDR_MODULE.html для 64-битных платформ указатель на TEB можно получить из gs)))
Rel да чего тут приватить или обожествлять? идея старая, решается на коленке кучей способов, в либах создающих сигнатуры смыслу нет, тк сложность и объем этой части редко превышает 1% от общей задачи. ну что, ж. попробуйте сами воспользоваться вашим советом. посмотрим, заработает ли та прога от вашего решения. значит, я был прав, когда там сказал, что 90% защитников решетки или сами ее видели только издали, или только ее и видели. (кстати, плюсы со смайликом еще совсем недавно были в возможном проекте. их уже реализовали? полностью? но так или иначе, как вы можете писать на них "всю жизнь"?)
значения хешей в подобных вызовах стандартно и может попадать в сигнатуру... лично мне было необходимо при каждой перекомпиляции проекта пересчитвать хеш... ну относительно меня вы видимо были правы)) но я так и не понял, какие претензии вы имеете к CIL-виртуальным машинам... да эт шутка, че вы... если под смайликом имеется ввиду то, что я подумал (C++0x), то в GCC уже есть поддержка большинства ценных для меня фич: http://gcc.gnu.org/gcc-4.6/cxx0x_status.html (сейчас у гцц стейбл-версия 4.6.2, в разработке 4.7.0)
Rel если hHeap возвращаемое значение, то зачем тут size_t. ведь тип известен. или я чего-то не доглядел?