Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
fREX:
fUML-based Reverse Engineering
of Executable Behavior
for Software Dynamic Analysis
Alexander Bergmayr, Hugo Bruneli...
Motivation & Context
http://www.artist-project.eu/
2
Motivation & Context
http://www.artist-project.eu/
3
Key Challenges
● Analyzing dynamic
aspects of software
o Reverse Engineering
process...
● Various languages &
platforms us...
Key Requirements
● Genericity / Reusability
o Potential multiple sources
(e.g. Java, C#, etc.)
● Extensibility
o New langu...
fREX – Contributions
● Open and extensible framework for
o Automated generation of fUML models
o Execution of fUML models ...
fREX – Overall Framework
Java
code
Code-level
Model-level
Model / code artifacts Tools
Legend
7
fREX – Overall Framework
Java
code
Java
model
Java Model
Discoverer
Code-level
Model-level
Model / code artifacts Tools
tr...
fREX – Overall Framework
Java
code
Java
model
fUML
model
Java Model
Discoverer
Java2fUML
Transformer
Code-level
Model-leve...
fREX – Overall Framework
Java
code
Java
model
Extended
fUML VM
fUML
model
Runtime
model
Java Model
Discoverer
Java2fUML
Tr...
fREX – Overall Framework
defined forJava
code
Java
model
Extended
fUML VM
fUML
model
Runtime
model
Test
Cases
Java Model
D...
fREX – Overall Framework
defined forJava
code
Java
model
Extended
fUML VM
fUML
model
Runtime
model
Test
Cases
Java Model
D...
fREX – Java-to-fUML Example
13
fREX – Java-to-fUML Example
14
fREX – Java-to-fUML Example
15
fREX – Java-to-fUML Example
16
fREX – Java-to-fUML Mapping (1/3)
Java concept fUML concept
MethodDeclaration md Add Activity a
a.name = md.name
…
ReturnT...
fREX – Java-to-fUML Mapping (2/3)
Java concept fUML concept
VariableDeclaration vd,
ClassInstanceCreation
cic
Add CreateOb...
fREX – Java-to-fUML Mapping (3/3)
Java concept fUML concept
Assignment a
switch
(a.leftHandSide)
case
ArrayAccess
Add AddS...
fREX – Eclipse-based tooling
● https://www.youtube.com/watch?v=Z-X_tNlwLtA
20
Application Scenarios
● Model Refinement
o Via model transformation(s)
o E.g. using fUML VM traces
● Model Slicing
o More ...
Conclusion / Future Work
● Reuse of existing model-
based techniques
o Scalability?
● Possible next steps
o Full Java-to-f...
Questions? Comments?
● https://github.com/atlanmod/fREX
● Contact persons:
o Alexander Bergmayr - bergmayr@big.tuwien.ac.a...
Upcoming SlideShare
Loading in …5
×

fREX: fUML-based Reverse Engineering of Executable Behavior for Software Dynamic Analysis - MiSE 2016 (ICSE 2016) @Austin, Texas, U.S.A.

1,474 views

Published on

Full paper is available from https://hal.inria.fr/hal-01280484
Source code in open source from https://github.com/atlanmod/fREX

Published in: Software
  • Be the first to comment

  • Be the first to like this

fREX: fUML-based Reverse Engineering of Executable Behavior for Software Dynamic Analysis - MiSE 2016 (ICSE 2016) @Austin, Texas, U.S.A.

  1. 1. fREX: fUML-based Reverse Engineering of Executable Behavior for Software Dynamic Analysis Alexander Bergmayr, Hugo Bruneliere, Jordi Cabot, Jokin Garcia, Tanja Mayerhofer and Manuel Wimmer MiSE’16 (co-located with ICSE 2016) @ Austin, Texas, U.S.A. Tuesday 17th of May 2016
  2. 2. Motivation & Context http://www.artist-project.eu/ 2
  3. 3. Motivation & Context http://www.artist-project.eu/ 3
  4. 4. Key Challenges ● Analyzing dynamic aspects of software o Reverse Engineering process... ● Various languages & platforms used o Cost of specific analysis techniques… 4
  5. 5. Key Requirements ● Genericity / Reusability o Potential multiple sources (e.g. Java, C#, etc.) ● Extensibility o New languages  pivot o Combination of them ● Non-intrusiveness o No source code instrumentation 5
  6. 6. fREX – Contributions ● Open and extensible framework for o Automated generation of fUML models o Execution of fUML models (fUML VM…) ● Initial base mapping between Java and fUML languages o Focus on behavioral aspects of Java o Focus on a subset of Java (MiniJava) 6
  7. 7. fREX – Overall Framework Java code Code-level Model-level Model / code artifacts Tools Legend 7
  8. 8. fREX – Overall Framework Java code Java model Java Model Discoverer Code-level Model-level Model / code artifacts Tools translated into Legend 8
  9. 9. fREX – Overall Framework Java code Java model fUML model Java Model Discoverer Java2fUML Transformer Code-level Model-level Model / code artifacts Tools translated into translated into Legend 9
  10. 10. fREX – Overall Framework Java code Java model Extended fUML VM fUML model Runtime model Java Model Discoverer Java2fUML Transformer executes produces refers to Code-level Model-level Model / code artifacts Tools translated into translated into Legend 10
  11. 11. fREX – Overall Framework defined forJava code Java model Extended fUML VM fUML model Runtime model Test Cases Java Model Discoverer Java2fUML Transformer executes produces refers to proves assertions against invokes Code-level Model-level Model / code artifacts Tools translated into translated into Legend 11
  12. 12. fREX – Overall Framework defined forJava code Java model Extended fUML VM fUML model Runtime model Test Cases Java Model Discoverer Java2fUML Transformer executes produces refers to proves assertions against invokes Model-based Analyzer exploits Code-level Model-level exploits Model / code artifacts Tools translated into translated into Legend 12
  13. 13. fREX – Java-to-fUML Example 13
  14. 14. fREX – Java-to-fUML Example 14
  15. 15. fREX – Java-to-fUML Example 15
  16. 16. fREX – Java-to-fUML Example 16
  17. 17. fREX – Java-to-fUML Mapping (1/3) Java concept fUML concept MethodDeclaration md Add Activity a a.name = md.name … ReturnType rt Add ActivityParameterNode rapn rapn.name = "return“ rapn.type = rt.type … FormalParameter fp Add ActivityParameterNode fapn fapn.name = fp.name fapn.type = fp.type … Block b Add InitialNode in, FinalNode fn, StructuredActivityNode san … 17
  18. 18. fREX – Java-to-fUML Mapping (2/3) Java concept fUML concept VariableDeclaration vd, ClassInstanceCreation cic Add CreateObjectAction createOA createOA.name = vd.type.name createOA.classifier = vd.type Add OutputPin op, ObjectFlow of, ForkNode fn, of.source = op, of.target = fn MethodInvocation mi Add CallOperationAction callOA callOA.name = mi.method.name callOA.operation = mi.method Add InputPin ip, ObjectFlow of -- target Add InputPin ip, ObjectFlow of foreach FormalParameter fp in mi.method Add OutputPin op for ReturnType rt in mi.method 18
  19. 19. fREX – Java-to-fUML Mapping (3/3) Java concept fUML concept Assignment a switch (a.leftHandSide) case ArrayAccess Add AddStructuralFeatureValueAction asfva asfva.name = -- cf. left hand side asfva.structuralFeature = -- cf. left hand side Add InputPin ip, ObjectFlow of for a.leftHandSide Add InputPin ip, ObjectFlow of for a.rightHandSide ThisExpression Add ReadSelfAction rsa rsa.name = "this" Add OutputPin op 19
  20. 20. fREX – Eclipse-based tooling ● https://www.youtube.com/watch?v=Z-X_tNlwLtA 20
  21. 21. Application Scenarios ● Model Refinement o Via model transformation(s) o E.g. using fUML VM traces ● Model Slicing o More specific fUML models o Impact on other (UML) models ● View Generation o Relation with other DSLs o Various model views 21
  22. 22. Conclusion / Future Work ● Reuse of existing model- based techniques o Scalability? ● Possible next steps o Full Java-to-fUML mapping... o Other (OO) languages... o Multiple programs... 22
  23. 23. Questions? Comments? ● https://github.com/atlanmod/fREX ● Contact persons: o Alexander Bergmayr - bergmayr@big.tuwien.ac.at o Hugo Bruneliere - hugo.bruneliere@inria.fr 23

×