Ние пишем бот за MMORPG с асемблер и draenei
Съдържание
- Част 0 - Намиране на точка за въвеждане на код
- Част 1 - Внедряване и изпълнение на код на трета страна
- Част 2 - Скриване на кода от любопитни очи
- Част 3 - Под оръжието World of Warcraft 5.4.x (Структури)
- Част 4 - Под пушката World of Warcraft 5.4.x (Движение)
- Част 5 - Под оръжието World of Warcraft 5.4.x (Casting fireball)
GetAnyGameObjectFunctionPointer - връща ни някакъв обект, указател към него ще бъде поставен в eax argument[N]Pointer - указател към N-тия аргумент заDoAnythingFunction.
След това идва въпросът за инжектирането на DLL. На сървър на battle.net това е потенциално опасен метод като вашият DLL може да бъде изпратен на отдела за сигурност за разследване. В края на краищата, това е най-често срещаният подход както в измамата, така и в разработката на ботове за внедряване на ваш собствен DLL. И не забравяйте, че популярността на даден подход е правопропорционална на вероятността да бъдете хванати.
Следващият въпрос е "защо не c++?". Това вече е въпрос на вкус. Ако можете да се справите по-добре и по-бързо в c ++ - направете го, но в момента не съм видял нищо друго освен неконструктивна критика на подхода. Нито едноедна примерна реализация в c++. Странно е, когато всеки може, а никой не го прави.
Друг интересен въпрос е "защо не x64?". Ако създадете 4 виртуални машини с win7 x86 и стартирате бот на всяка, докато те ще консумират по-малко ресурси от хост машината, отколкото win7 x64. Е, като цяло, за мен е безразлично на коя платформа работи ботът, както и за него. Този въпрос ще бъде от значение, когато пишете мами, когато играете сами.
За всички други въпроси отговорът ще бъде: „През последните 4 години на сървъра на battle.net никога не съм получавал бан или предупреждение“
Относно грешки в кода и публикациите. Да, може да имам правописни грешки и грешки като всички вас и ако ги забележите, тогава не трябва да ги развявате като знаме на Червения площад на парад, просто ми пишете на лично съобщение и аз определено ще го коригирам. Това ще покаже не само вашето внимание и знания, но и учтивост и добро възпитание. Това е като ако на човек му остане сос или храна по брадата, докато яде. Смятате ли, че е редно да обсъждаме на масата колко концептуално е увиснал?
2. Търсене с изместванеЗа търсене с изместване предпочитам да търся по маска. Естествено, най-добрият начин да намерите указател на функция е отстраняването на грешки и само отстраняването на грешки ще даде 100% гаранция, че сте намерили точно това, от което се нуждаете. Но този процес може да бъде много досаден и дълъг, а как за начинаещи в 5 статии да обяснят за отстраняване на грешки, точки на прекъсване и дизасемблер, когато така или иначе почти нищо не е ясно, както забелязах. Затова използвам търсенето по маска в статията. Нека да разгледаме всичко с пример. Първо, нека изтеглим 2 различни файла Wow.exe, една основна версия (взех 5.4.7 17898 и WowCircle-32.exe клиент 5.4.7 18019). Нашата задача е да намерим отмествания за Morpher, докато отместванията за 17898 са ни известни:
CD 21 - байтове0xCD, 0x21 21CD - байтове 0xCD, 0x21 (редът зависи от endiannes) "Hello", 0 - низът с нулев край "Hello" L"Hello" - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0 B8. 90 - байт 0xB8, 4 байта с произволна стойност, байт 0x90
Например, за да търся CGUnit_C__UpdateScale, ще взема не първите 15 байта, а от 21 до 35, т.к. няма нежелани инструкции. Можете също да използвате плъгина MakeSig IDA за тази цел.
Hardcore conf в C++. Каним само професионалисти.