Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 25.09.2015, 22:57   #16
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Создание защищённого кода

Цитата:
Сообщение от lxxlПосмотреть сообщение
Демку все же удалось запустить, но она работает не корректно, IL инжект не проходит выдавая встроенное исключение.
[UPD]
И так, я все же нашел работающую версию этой [Ссылки могут видеть только зарегистрированные пользователи. ] -> нужно было скачать "Previous version binaries and demo" или "Previous version source code". Код у меня таки не скомпилился выдав это -> [Ссылки могут видеть только зарегистрированные пользователи. ]. В уже скомпиленых файлах работающими оказались только 2 -> "Test_x64_DotNet20_Release" и "Test_x64_DotNet35_Release", остальные запускались, но в тексбоксе писали это -> "Initialization is failed with error [Error_CLRNotFound]!".
Обрадовавшись что код осказался впринципи работающим, я решил просто закинуть класс "InjectionHelper" в свой проект и затестить его там. Нужная dll -> "Injection32(64)" загрузилась нормально, а вот дальше в текст бокс выкинуло вот эту ошибку -> "Initialization is failed with error [Error_DbgHelpNotFound]!". Я попробывал закинуть к исполняемому файлу программы папку в которой судя по статье находятся эти файлы, а именно -> "х64", но это не помогло. Значит эти файлы нужно привязать к своей программе как-то иначе. Вот, помогите разобраться в этом господа)

Оп оп, подхватываю тему, попытаюсь сделать рабочую демку на основе текущей демки xD
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 26.09.2015, 22:52   #17
 Разведчик
Аватар для lxxl
 
lxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауру
Регистрация: 14.10.2011
Сообщений: 13
Популярность: 559
Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 2 сообщениях
 
По умолчанию Re: Создание защищённого кода

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Оп оп, подхватываю тему, попытаюсь сделать рабочую демку на основе текущей демки xD

Будет круто таки)
Подсоблю немного, покопавшить в файлах исходного кода, нашел .cpp файл -> "PdbHelper", которого не хватает моей программе, по адресу -> "source_code_20121105\Injection\", а вообще я так понял, мой код не работает из-за того, что всей этой папки нет в проекте, но опять же, если ее подключить в проект - это не поможет.
[UPD]
Парам пам пам, у меня вышло запусить код в свой проге! НО, есть 2 проблемы:
1. Сделал я это очень карявым способом - переместил 3 папки -> "cache", "PDB_symbols", "x64" из релиза скаченого с кодепрожекта к исполняемому файлу моей проги.
2. Работает это чудо только на NET Framework 2.0 - 3.5 (самая большая проблема - не знаю как пофиксить)
[UPD2]
Радовался раньше времени, простые действия типо арефметики и вывода строки работают на ура. А вот более сложные ,циклы или сравнения уже не компилятся, выкидывая исключение -> "Среда выполнения Common Language Runtime обнаружила недопустимую программу." Еще более сложные функции вообще проверять не стал(

Последний раз редактировалось lxxl; 27.09.2015 в 14:15.
  Ответить с цитированием
Старый 27.09.2015, 15:06   #18
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Создание защищённого кода

Цитата:
Сообщение от lxxlПосмотреть сообщение
Будет круто таки)
Подсоблю немного, покопавшить в файлах исходного кода, нашел .cpp файл -> "PdbHelper", которого не хватает моей программе, по адресу -> "source_code_20121105\Injection\", а вообще я так понял, мой код не работает из-за того, что всей этой папки нет в проекте, но опять же, если ее подключить в проект - это не поможет.
[UPD]
Парам пам пам, у меня вышло запусить код в свой проге! НО, есть 2 проблемы:
1. Сделал я это очень карявым способом - переместил 3 папки -> "cache", "PDB_symbols", "x64" из релиза скаченого с кодепрожекта к исполняемому файлу моей проги.
2. Работает это чудо только на NET Framework 2.0 - 3.5 (самая большая проблема - не знаю как пофиксить)
[UPD2]
Радовался раньше времени, простые действия типо арефметики и вывода строки работают на ура. А вот более сложные ,циклы или сравнения уже не компилятся, выкидывая исключение -> "Среда выполнения Common Language Runtime обнаружила недопустимую программу." Еще более сложные функции вообще проверять не стал(

Значит что-то не учтено. Потому что если тело функции с одним IL-ом работает, а потом когда его опять заменяют => работать должно.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 27.09.2015, 15:54   #19
 Разведчик
Аватар для lxxl
 
lxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауру
Регистрация: 14.10.2011
Сообщений: 13
Популярность: 559
Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 2 сообщениях
 
По умолчанию Re: Создание защищённого кода

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Значит что-то не учтено. Потому что если тело функции с одним IL-ом работает, а потом когда его опять заменяют => работать должно.

Хм, а можно ваш пример, где есть цикл например? Может я действительно что-то не так делаю...
[UPD]
Понял в чем беда, оказывается если оставить тело метода пустым, и пытаться инжектить в него - получишь исключение. Если написать в нем хотя бы объявление каких-либо переменных, все будет работать. Пойду тестить дальше)

Последний раз редактировалось lxxl; 27.09.2015 в 16:42.
  Ответить с цитированием
Старый 27.09.2015, 17:12   #20
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Создание защищённого кода

Цитата:
Сообщение от lxxlПосмотреть сообщение
Хм, а можно ваш пример, где есть цикл например? Может я действительно что-то не так делаю...
[UPD]
Понял в чем беда, оказывается если оставить тело метода пустым, и пытаться инжектить в него - получишь исключение. Если написать в нем хотя бы объявление каких-либо переменных, все будет работать. Пойду тестить дальше)

Пока нету рабочего образца, руки не дотянутся, возьмите process hacker, запустите приложение, измените il, сдампите процесс, откройте в рефлекторе/spy-е и гляньте тело метода - оно стало как до изменения или после? Это кстате самый главный вопрос
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 18.01.2016, 01:42   #21
 Разведчик
Аватар для lxxl
 
lxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауру
Регистрация: 14.10.2011
Сообщений: 13
Популярность: 559
Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 2 сообщениях
 
По умолчанию Re: Создание защищённого кода

Апну тему спустя пол года
Интересует все тоже самое, вышло ли у кого заижектить циклы и прочий "сложный" код?
  Ответить с цитированием
Старый 27.01.2016, 21:36   #22
 Разведчик
Аватар для lxxl
 
lxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауруlxxl излучает ауру
Регистрация: 14.10.2011
Сообщений: 13
Популярность: 559
Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 2 сообщениях
 
По умолчанию Re: Создание защищённого кода

Никто не хочет поговорить, ех =( А я тут нашел новую странность. И так, имеем 2 метода:
Код:
public static void Fix(Func<int> f, byte[] b)
        {
            RuntimeHelpers.PrepareMethod(f.Method.MethodHandle);

            System.Threading.Thread.Sleep(350);
            if (InjectionHelper.GetStatus() == InjectionHelper.Status.Ready)
                InjectionHelper.UpdateILCodes(f.Method, b);
            else
                System.Windows.Forms.MessageBox.Show(InjectionHelper.GetStatus().ToString());
            System.Threading.Thread.Sleep(100);
        }

        public static void Fix(Func<int> f, Func<int> f2)
        {
            byte[] b = f2.Method.GetMethodBody().GetILAsByteArray();

            List<string> l = new List<string>(b.Select(x => x.ToString()));
            l.ForEach(x => System.IO.File.AppendAllText(Environment.CurrentDirectory + "\\" + f2.Method.Name + ".txt", x + ' '));

            RuntimeHelpers.PrepareMethod(f.Method.MethodHandle);
            
            System.Threading.Thread.Sleep(350);
            if (InjectionHelper.GetStatus() == InjectionHelper.Status.Ready)
                InjectionHelper.UpdateILCodes(f.Method, b);
            else
                System.Windows.Forms.MessageBox.Show(InjectionHelper.GetStatus().ToString());
            System.Threading.Thread.Sleep(100);
        }
Делают они все одно и тоже, различия только в том что первый принимает в качестве 2го аргумента непосредственно массив IL опкодов, а второй принимает в качестве 2го аргумента функцию, из которой потом будет извлечено этот массив IL опкодов + во второй функции мы запишем этот массив в файл.
Но вот работает только 2й метод, первый же выдает неясную ошибку:
Необработанное исключение типа "System.IO.IOException" в mscorlib.dll
Дополнительные сведения: Заданного параметра реестра не существует.

Ошибка эта вылетает в функции куда должен быть выполнен инжект. Я в замешательстве
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кожа Персонажа lekario325 Общение и обсуждение Perfect World 3 25.12.2011 11:02
[Помогите!] Кода OggI1111 Общение и обсуждение Counter-Strike 3 10.04.2011 16:29
[Баг] инжа sarrulkas Читы, баги и статьи по WoW 3 28.04.2010 14:51

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:41.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net