Git Product home page Git Product logo

v850-ida-scripts's Introduction

v850-ida-scripts

decompv850.py - скрипт, запускается по alt+F7 (выполнить скрипт), анализирует код и некоторые распознанные структуры снабжает комментариями в виде С-подобного кода
rh850_f1l.hpp - определения структур соответсвующих устройствам на кристалле RH850/F1L rh850_f1l.py - используя данные rh850_f1l.hpp а так же определенные внутри скрипта таблицы чтобы задать уcтройства микроконтролллера RH850/F1L
ida_structs.py - набор функций позволяющий импортировать C структуры

decompv850.py

Примеры результатов работ скрипта.

анализ присвоений

assign.JPG

  • По адресам 849A-849E, 84A2-84A6 b 84B0-84B4 производится присвоение в две комманды. сначала в старшее полуслово, коммандой movhi, затем в младшее коммандой movea
  • По адресам 84A2-84AA подготавливаются аргументы (r6) функции sub_84e8 и затем ее вызов

assign.JPG

  • Еще один пример распознавания присвоений и подготовки аргументов функций. В следствие не достаточной сложности алгоритма, скрипт не распознает что в r7, через r1 попадает значение *(uint16_t*)(r29+0x14) и он останавливается на r1, что мы и видим в вызове функции

assign.JPG

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

assign.JPG

  • Так же распознает вызовы функций по указателю. На данный момент использует шаблон jarl [xxx], y

assign.JPG

  • В качестве аргументов функции, пока, распознает только передачу параметров через регистры. До четырех аргуметнов r6-r9

assign.JPG

  • Из циклов на данный момент распознает только один шаблон:
do{
...
}while( a ? b );

распознает условия формируемые следующими условными переходами:

  • bgt: a > b
  • bge: a >= b
  • blt: a < b
  • ble: a <= b
  • bh : (unsigned)a > (unsigned)b
  • bnh: (unsigned)a <= (unsigned)b
  • be : a == b
  • bnl: (unsigned)a >= (unsigned)b
  • bl : (unsigned)a < (unsigned)b
  • bne: a != b
  • bn : a < 0
  • bp : a >= b,
  • br : true
  • bc : (unsigned)a < (unsigned)b
  • bnc: (unsigned)a >= (unsigned)b
  • bz : a == b
  • bnz: a != b

оставшиеся условные переходы не распознаются и их условия отображаются знаком вопроса

v850-ida-scripts's People

Contributors

eugenosm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

bg4rff

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.