eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: stran34, esa_r, korsaring, SDK (+5 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Помогите новичку разобраться в дизассемблированом С#
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Статус: Участник

Создано: 1 апреля 2010 06:14 New!
Цитата · Личное сообщение · #1

Здравствуйте!
Вот возникла у меня мысль попробовать IDA PRO дизассемблировать программу. Я новичок в этом деле. А тут ещё программа попалась написанная на С#. Но мне показалось забавным то, что IDA PRO определил много чего интересного (например название классов методов и т.д.) и решил разобраться в дизасемблированном коде. Но столкнулся вот с какой проблемой. Сам я никогда не писал под C# и мне как то слабо понятно почему в дизасемблированном коде вреде как почти ассемблерные команды но без операндов. И как в С# передаются параметры функции? Что такое stloc.0, ldc.r8 и т.д. В качестве примера могу привести следующую функцию:

.method public static hidebysig float64 calculateDist(class GpsPosition p1, class GpsPosition p2)
// CODE XREF: addPosition+9Ep
// sub_1EE0+E6p ...
{
.locals init (float64 V0,
float64 V1,
float64 V2,
float64 V3,
float64 V4)
ldc.r8 0.0174532925199433
ldarg.0
ldfld float64 GpsPosition::Latitude
mul
stloc.0
ldc.r8 0.0174532925199433
ldarg.0
ldfld float64 GpsPosition::Longitude
mul
stloc.1
ldc.r8 0.0174532925199433
ldarg.1
ldfld float64 GpsPosition::Latitude
mul
stloc.2
ldc.r8 0.0174532925199433
ldarg.1
ldfld float64 GpsPosition::Longitude
mul
stloc.3
ldc.r8 2.0
ldloc.0
ldloc.2
sub
ldc.r8 2.0
div
call float64 [mscorlib]System.Math::Sin(float64)
ldc.r8 2.0
call float64 [mscorlib]System.Math::Pow(float64, float64)
ldloc.0
call float64 [mscorlib]System.Math::Cos(float64)
ldloc.2
call float64 [mscorlib]System.Math::Cos(float64)
mul
ldloc.1
ldloc.3
sub
ldc.r8 2.0
div
call float64 [mscorlib]System.Math::Sin(float64)
ldc.r8 2.0
call float64 [mscorlib]System.Math::Pow(float64, float64)
mul
add
call float64 [mscorlib]System.Math::Sqrt(float64)
call float64 [mscorlib]System.Math::Asin(float64)
mul
stloc.s 4
ldloc.s 4
ldc.r8 6371.0
mul
ret
}

Эта функция всего лишь высчитывает расстояние между 2мя точками (pgs координатами), как я подозреваю никаких переходов и прочего, довольно простая функция (метод), но ЧТО значат все эти непонятные слова типа stloc.s. И как именно этот метод возвращает результам? В инете как - то мало информации по дизасемблированию C# нашёл 1статью, и то не сильно подробную. может у кого есть стоящая литература?


Ранг: 312.2 (мудрец)
Статус: Участник

Создано: 1 апреля 2010 06:28 New!
Цитата · Личное сообщение · #2

Возьми лучше Reflector. Там C# код увидишь, в чем намного приятней будет разбираться.

Ранг: 4.0 (гость)
Статус: Участник

Создано: 1 апреля 2010 06:36 · Поправил: Woron_lexa New!
Цитата · Личное сообщение · #3

ок, попробую, но есть одно НО, .ехе-шник (который я дизамблировал) под ARM (PocketPC). Reflector его съест?

Спасибо. Помогло. Схавал за милую душу. А как в Reflector что нибудь изменить в программе?

Ранг: 516.1 (!)
Статус: Участник

Создано: 1 апреля 2010 06:42 New!
Цитата · Личное сообщение · #4

какая разница под что, framework везде один

Ранг: 281.6 (наставник)
Статус: Участник
Destroyer of protectors

Создано: 1 апреля 2010 07:21 · Поправил: MasterSoft New!
Цитата · Личное сообщение · #5

Woron_lexa пишет:
А как в Reflector что нибудь изменить в программе?

100 раз уже отвечали. по форума поищи. плаг есть к рефлектору для этого дела, зайди ан офф. сайт, там должен быть.

Added:
А вот собственно и плаг: sourceforge.net/projects/reflexil/


Ранг: 630.8 (!)
Статус: Участник
Автор VB Decompiler

Создано: 1 апреля 2010 08:17 New!
Цитата · Личное сообщение · #6

Woron_lexa пишет:
А как в Reflector что нибудь изменить в программе?


Никак стандартно. И нестандартно - через опу. У меня это в VB Decompiler реализовано нагляднее.

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 1 апреля 2010 08:20 New!
Цитата · Личное сообщение · #7

Woron_lexa пишет:
ЧТО значат все эти непонятные слова типа stloc.s.

msdn.microsoft.com/ru-ru/library/system.reflection.emit.opcodes_members.aspx


Ранг: 539.6 (!)
Статус: Участник
оптимист

Создано: 1 апреля 2010 13:07 New!
Цитата · Личное сообщение · #8

Вот вещь интерессная www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/NetDasm.shtml

Ранг: 516.1 (!)
Статус: Участник

Создано: 2 апреля 2010 17:57 New!
Цитата · Личное сообщение · #9

Woron_lexa пишет:
А как в Reflector что нибудь изменить в программе?


sourceforge.net/projects/reflexil/

Ранг: 189.9 (ветеран)
Статус: Участник

Создано: 2 апреля 2010 20:42 New!
Цитата · Личное сообщение · #10

Woron_lexa пишет:
В инете как - то мало информации по дизасемблированию C# нашёл 1статью, и то не сильно подробную. может у кого есть стоящая литература?

www.ntcore.com/articles.php и tuts4you.com/download.php?list.48

Ранг: 203.3 (наставник)
Статус: Участник
UPX Killer -d

Создано: 3 апреля 2010 12:22 New!
Цитата · Личное сообщение · #11

Woron_lexa пишет:
А как в Reflector что нибудь изменить в программе?

Довольно дерьмово это получается даже через плагин.
Так что сильно редактировать не надейся.

Ранг: 23.8 (новичок)
Статус: Участник

Создано: 9 апреля 2010 16:19 New!
Цитата · Личное сообщение · #12

а что мешает посмотреть в той же IDA мнемонику команд? и потом обычным hiew подправить нужные байты?

Ранг: 4.0 (гость)
Статус: Участник

Создано: 12 апреля 2010 22:58 New!
Цитата · Личное сообщение · #13

sataron пишет:
а что мешает посмотреть в той же IDA мнемонику команд? и потом обычным hiew подправить нужные байты?


Спасибо за совет.

Изменил одну переменную в редакторе (hiew), проверил в IDA и Reflector'e - всё нормально. Но когда запускаю .exe'шник (на кпк) то вылазиет ошибка типа переустановите Фреймворк.
Подскажите в чём может быть проблема?
Изменил число 6371.0(40 B8 E3 00 00 00 00 00) на 7645.2(40 BD DD 33 33 33 33 33) тип double.

Заранее спасибо.

Ранг: 516.1 (!)
Статус: Участник

Создано: 13 апреля 2010 06:18 New!
Цитата · Личное сообщение · #14

Woron_lexa, возможно сборка подписана strong name

Ранг: 4.0 (гость)
Статус: Участник

Создано: 13 апреля 2010 06:33 · Поправил: Woron_lexa New!
Цитата · Личное сообщение · #15

Av0id пишет:
Woron_lexa, возможно сборка подписана strong name


А можно по подробнее я всётаки пока в танке, достаточно будет ссылки на инфу.
И если возможно как с этим бороться.
И ещё как узнать точно ли она подписана и можно ли изменить или убрать эту подпись.
Спасибо.

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 13 апреля 2010 07:21 New!
Цитата · Личное сообщение · #16

www.nirsoft.net/dot_net_tools/strong_name_remove.html

Ранг: 189.9 (ветеран)
Статус: Участник

Создано: 13 апреля 2010 10:49 New!
Цитата · Личное сообщение · #17

Woron_lexa пишет:
А можно по подробнее я всётаки пока в танке, достаточно будет ссылки на инфу.И если возможно как с этим бороться.

Ты слепой? Я же тебе дал ссылки там про стронг тоже есть(тутс4ю), на каком то из последних хакеров тоже проскакивала инфа. Ты что поиском пользоваться не умеешь? Такие вопросы да ещё в основном форуме.

Ранг: 4.0 (гость)
Статус: Участник

Создано: 13 апреля 2010 23:57 New!
Цитата · Личное сообщение · #18

Спасибо за ссылки.
У меня вот такое сообщение выдаёт при попытке запустить изменённый файл.

Программе не удаётся загрузить необходимый компонент. Если платформа .NET Compact Framework установлена на карте памяти убедитесь что карта установлена и запустите программу снова. Если это не поможет рекомендуется переустановить платформу .NET Compact Framework .

Как я понял на симптомы strong name не похоже, или я ошибаюсь?

Ранг: 189.9 (ветеран)
Статус: Участник

Создано: 14 апреля 2010 00:12 New!
Цитата · Личное сообщение · #19

Поставь новый .NET Compact.

Ранг: 78.7 (постоянный)
Статус: Участник

Создано: 14 апреля 2010 11:45 New!
Цитата · Личное сообщение · #20

Попробуй Разобрать и Пересобрать, со своими Изменения Прогу ! ildasm&ilasm Поможет !
 eXeL@B —› Основной форум —› Помогите новичку разобраться в дизассемблированом С#

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS