пятница, 22 августа 2014 г.

СОН ДЛЯ СЛАБАКОВ

Если кто-то думает что нужно посидеть над рисунком 3 часа и выйдет что-то путное - вы ошибаетесь. Выйдет что-то более менее, но не то чтобы путное. Картинка под катом, чтобы не пугать народ.

вторник, 4 марта 2014 г.

Эксперименты с DirectDraw. Прямой доступ к видеопамяти в наше время.

Всем привет. Я таки вышел из зимней спячки и готов к подвигам чуть более чем нифига :) .Ну да ладно, сделаю все что смогу. Сегодня я хочу поведать о такой мифической вещи как видеопамять.


воскресенье, 20 октября 2013 г.

А где Giperion? или затянувшееся молчание

 It's be a long way...


Ну что ж. Я почти уверен что никого здесь уже нету :) . Почему так долго? Так полу... Эй, эй, я ж пошутил! Ну лень взяла, тоска, жаба, или что там обычно человека берет. Ничего делать не хотелось. Получилось много букф, но я и так много чего пропустил. Но обо всем по порядку.

понедельник, 12 августа 2013 г.

Отпинговка

Чтож, можно уверено сказать, что я выдохся. Вернее я ничего не хочу делать на этом компьютере (ноутбуке, если на то пошло). До покупки остался почти ровно месяц, но я уже распланировал его использование на год вперед, если не дальше. Столько всего нужно отрендерить.... и еще много сделать чтобы отрендерить :D .
Я потихоньку удаляю игры с ноута. ТФ2, l4d2. Никогда бы не подумал их удалить, а вот подижды...
Моделирование, программирование, фракталы, рисование, разработка вебсайта - все заброшено. Но только на месяц! Честно!
Единственное чем я щас занимаюсь (из творческого) - играю в майн с другом. С модами IC2, BuildCraft, ThaumCraft, BiblioCraft, TwilightForest и еще каким то. Классический майн уже слишком прост для меня.

Как вы видите оформление просто афигенное. Да мы настолько убоги, что поселились в пещере, где даже копать почти не надо было. Зато у нас есть куча ништяков, стак алмазов, ядерный реактор генерящий 320 EU/T, масс фабрикатор и все нужное для тауматургий и зельеварения. Из ништяков - ферма пшеницы/морковки/арбузов/тыкв (спасибо Saul_Myers, главный огородник дома), редкие саженцы деревьев (мало кто знает как их достать, а я пол сумеерчного леса обшарил), собственный стол раскрафта и зачаровка. Есть все что душа пожелает, правда еще в билдкрафт не уходили. Ну и конечно же все время откладываем постройку дома, т.к. мне лень строить, а Маерсу тем более.

Такие дела.

суббота, 20 июля 2013 г.

Адресса, сигнатуры или "Как делать трейнера для игр?" часть 1

Работа с анимацией и моделями в последнее время просто нереально напрягает (возникли два вопроса по поводу анимации, ответа на которых никто не может мне дать, поэтому все простаивает). Поэтому я периодически отвлекаюсь на всякие разные мелкие вещи, которые когда то меня интересовали.

К примеру где хранятся значения в запущенных программах и как получить к ним доступ. Собственно ответы на эти вопросы я получил хуй знает когда, а сегодня я просто применял знания на практике (и подкреплял все это с новыми знаниями программирования).

Сначала я скачал себе OllyDbg но он видимо был создан для конченых программистов, но потом я решил по старинке обойтись CheatEngine. Скажу сразу - про Olly я тоже скажу пару слов. Поехали.

Программа намекает: "ТРАССИРУЙ, ТРАССИРУЙ МЕНЯ ПОЛНОСТЬЮ"
Как догадался ваш внутренний КЭП прогу написал я, и специально ради этого дела.
Код просто огромен, поэтому я его здесь оставлю, чтобы вы утонули в нем:


public partial class Form1 : Form
  {
int carrots = 1564;
string story = "Cool story, my friend, but where i?";
   
private void Form1_Load(object sender, EventArgs e)
{
label2.Text = carrots.ToString();
label4.Text = story;
}

private void button1_Click(object sender, EventArgs e)
{
label2.Text = carrots.ToString();
label4.Text = story;
}
}

Для экспериментаторов: я удалил InitializeComponent();. И не надо спрашивать причем тут морковь.

Олли у меня совсем не хотел работать. Уточняю: он не хотел работать в моих корявых непрограммерских руках :D . В тоже время Cheat Engine смог найти значение морковок (он нашел два адресса, но не суть).

Как работать с программами я не смогу сказать, поскольку Cheat Engine интуитивен, а OllyDbg я и сам толком незнаю :D. Единственное что надо знать: адресса заправляют всем. У каждого значение есть свои адресс, по которому его можно достать и изменить.

А теперь ближе к делу. Первое что меня удивило: я не смог отковырять адресс значения лейбла (т.е. именно то, что отображается в том небольшом окошке программы, а ведь это отдельное значение!). Отладчик смог отловить только адресс оригинального значения. Второе: отладчик не мог найти строковое значение! Не, я серьезно! Он реально не мог найти его, чтобы я не делал. Я воспользовался Memory View.... и очень быстро нашел искомое.
Для танкистов: на адрессе 025EC6B4 записан int carrots, а через 16 байтов уже начинается значение string story. При помощи функции Add Address Manually я добавил адресс и указал что это является юникодовой строкой. Сработало.
Еще один интересный момент. В строке нулевые байты означают конец символа. Я там нечайно один сделал ненулевым - в итоге в том месте у меня отобразился какой-то китайский иероглиф. В принципе логично - их же дофига.
Все что я сказал выше - просто подмена значений прямо в запущенной программе. Но можно сделать так, чтобы программа сама не изменяла значения.... или делал с ним что-то другое.
Однако тут есть еще одна проблема. Дело в том, что некоторые значения в программе появляются не сразу. И каждый раз эти значения могут находится в разных адресах.

Соответственно встает вопрос: "А программным способом найти нужный адрес"?

Для этого нам понадобится создать сигнатуру.

Сигнатура - это уникальная последовательность байтов. Она может служить как однозначным идентификатором файла (обычно пишет её в самом начале), либо с помощью её находить нужные адреса. Что нам и нужно.

Сигнатуру можно создать с помощью отладчика OllyDbg. Но об этом я поговорю во второй части статьи.

среда, 26 июня 2013 г.

In-place to Root Motion через NLA

Когда передо мной встала задача создать Root Motion анимацию, то я уже тогда пытался делать через In-place. В декабре прошлого года (тогда я занимался экспериментами с Mecanim) мне удавалось делать это только если небыло никаких IK системы.
Собственно оно и сейчас так, однако что делать если главная кость все таки немного движется? поворачивается, незначительно меняет положение? Или у неё есть множество ключевых кадров?