eXeL@B —› Основной форум —› Помогите новичку разобраться в дизассемблированом С# |
Посл.ответ | Сообщение |
|
Создано: 01 апреля 2010 06:14 · Личное сообщение · #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статью, и то не сильно подробную. может у кого есть стоящая литература? |
|
Создано: 01 апреля 2010 06:28 · Личное сообщение · #2 |
|
Создано: 01 апреля 2010 06:36 · Поправил: Woron_lexa · Личное сообщение · #3 |
|
Создано: 01 апреля 2010 06:42 · Личное сообщение · #4 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 01 апреля 2010 07:21 · Поправил: MasterSoft · Личное сообщение · #5 |
|
Создано: 01 апреля 2010 08:17 · Личное сообщение · #6 |
|
Создано: 01 апреля 2010 08:20 · Личное сообщение · #7 |
|
Создано: 01 апреля 2010 13:07 · Личное сообщение · #8 |
|
Создано: 02 апреля 2010 17:57 · Личное сообщение · #9 |
|
Создано: 02 апреля 2010 20:42 · Личное сообщение · #10 |
|
Создано: 03 апреля 2010 12:22 · Личное сообщение · #11 |
|
Создано: 09 апреля 2010 16:19 · Личное сообщение · #12 |
|
Создано: 12 апреля 2010 22:58 · Личное сообщение · #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. Заранее спасибо. |
|
Создано: 13 апреля 2010 06:18 · Личное сообщение · #14 |
|
Создано: 13 апреля 2010 06:33 · Поправил: Woron_lexa · Личное сообщение · #15 |
|
Создано: 13 апреля 2010 07:21 · Личное сообщение · #16 |
|
Создано: 13 апреля 2010 10:49 · Личное сообщение · #17 Woron_lexa пишет: А можно по подробнее я всётаки пока в танке, достаточно будет ссылки на инфу.И если возможно как с этим бороться. Ты слепой? Я же тебе дал ссылки там про стронг тоже есть(тутс4ю), на каком то из последних хакеров тоже проскакивала инфа. Ты что поиском пользоваться не умеешь? Такие вопросы да ещё в основном форуме. |
|
Создано: 13 апреля 2010 23:57 · Личное сообщение · #18 Спасибо за ссылки. У меня вот такое сообщение выдаёт при попытке запустить изменённый файл. Программе не удаётся загрузить необходимый компонент. Если платформа .NET Compact Framework установлена на карте памяти убедитесь что карта установлена и запустите программу снова. Если это не поможет рекомендуется переустановить платформу .NET Compact Framework . Как я понял на симптомы strong name не похоже, или я ошибаюсь? |
|
Создано: 14 апреля 2010 00:12 · Личное сообщение · #19 |
|
Создано: 14 апреля 2010 11:45 · Личное сообщение · #20 |
eXeL@B —› Основной форум —› Помогите новичку разобраться в дизассемблированом С# |