This document proposes adding function argument detection capabilities to the disassembler Radare2. It would begin by writing tests and enhancing existing commands like 't' and 'pf' to better handle function parameters. Next, it aims to add support for variations of the fastcall calling convention and naming local variables on the stack. The primary goal is implementing type propagation to infer the types of local variables and function arguments. The proposal provides a detailed timeline breaking the work into weekly increments over 3 months. It also lists some optional goals like supporting Windows and POSIX data types.
java notes, object oriented programming using java, java tutorial, lecture notes, java programming notes, java example programs, java programs with explanation, java source code with output, java programs, java coding, java codes, java slides, java notes,command line arguments in java, java command line arguments notes, java command line arguments notes,different types of command line arguments in Java,command line arguments with an example, command line arguments in Java
Command-line arguments are given after the name of the program in command-line shell of Operating Systems.
To pass command line arguments, we typically define main() with two arguments : first argument is the number of command line arguments and second is list of command-line arguments.
java notes, object oriented programming using java, java tutorial, lecture notes, java programming notes, java example programs, java programs with explanation, java source code with output, java programs, java coding, java codes, java slides, java notes,command line arguments in java, java command line arguments notes, java command line arguments notes,different types of command line arguments in Java,command line arguments with an example, command line arguments in Java
Command-line arguments are given after the name of the program in command-line shell of Operating Systems.
To pass command line arguments, we typically define main() with two arguments : first argument is the number of command line arguments and second is list of command-line arguments.
Property-based testing an open-source compiler, pflua (FOSDEM 2015)Igalia
By Katerina Barone-Adesi.
Discover property-based testing, and see how it works on a real project, the pflua compiler.
How do you find a lot of non-obvious bugs in an afternoon? Write a property that should always be true (like "this code should have the same result before and after it's optimized"), generate random valid expressions, and study the counter-examples!
Property-based testing is a powerful technique for finding bugs quickly. It can partly replace unit tests, leading to a more flexible test suite that generates more cases and finds more bugs in less time.
It's really quick and easy to get started with property-based testing. You can use existing tools like QuickCheck, or write your own: Andy Windo and I wrote pflua-quickcheck and found a half-dozen bugs with it in one afternoon, using pure Lua and no external libraries.
In this talk, I will introduce property-based testing, demonstrate a tool for using it in Lua - and how to write your own property-based testing tool from scratch, and explain how simple properties found bugs in pflua.
(c) 2015 FOSDEM VZW
CC BY 2.0 BE
https://archive.fosdem.org/2015/
Instrumenting Go (Gopherconindia Lightning talk by Bhasker Kode)Bhasker Kode
Lightning Talk by Bhasker Kode from Helpshift on instrumenting your golang code to a statsite compatible server. with examples, screenshots, and getting started.
FregeDay: Design and Implementation of the language (Ingo Wechsung)Dierk König
Talk by Ingo Wechsung at the FregeDay 2015, Sept 11th, Basel, Switzerland, covering general characteristics of the language, history, and important design decisions.
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...Dierk König
Diskusssion of what kind of differences there are between Haskell 2010 and Frege, how difficult they are to resolve, what their impact is, and what to do about them. Also: how to allow essential differences that will never work outside the JVM and demarcate them from supposed-to-be vanilla Haskell.
ANTLR educational slides. The slides provide a simple introduction to ANTLR, a parser generator and a language application development framework.
By Morteza Zakeri.
PostgreSQL's is one of the finest database systems available.
The talk will cover the history, the basic concepts of the PostgreSQL's architecture and the how the community behind the "the most advanced open source database" works.
This fun session covers some of the new language features found in C# 6.
This session was presented as part of the Microsoft South Africa Dev Day roadshow in March 2015.
More info at: http://www.sadev.co.za/content/slides-my-devday-march-2015-talks
Why Social Data Deserves More of Your BudgetFalcon Social
Get the webinar playback here: http://fal.cn/Ku_O
Learn how social intelligence can help you predict customer needs, and maximise customer lifetime value.
Property-based testing an open-source compiler, pflua (FOSDEM 2015)Igalia
By Katerina Barone-Adesi.
Discover property-based testing, and see how it works on a real project, the pflua compiler.
How do you find a lot of non-obvious bugs in an afternoon? Write a property that should always be true (like "this code should have the same result before and after it's optimized"), generate random valid expressions, and study the counter-examples!
Property-based testing is a powerful technique for finding bugs quickly. It can partly replace unit tests, leading to a more flexible test suite that generates more cases and finds more bugs in less time.
It's really quick and easy to get started with property-based testing. You can use existing tools like QuickCheck, or write your own: Andy Windo and I wrote pflua-quickcheck and found a half-dozen bugs with it in one afternoon, using pure Lua and no external libraries.
In this talk, I will introduce property-based testing, demonstrate a tool for using it in Lua - and how to write your own property-based testing tool from scratch, and explain how simple properties found bugs in pflua.
(c) 2015 FOSDEM VZW
CC BY 2.0 BE
https://archive.fosdem.org/2015/
Instrumenting Go (Gopherconindia Lightning talk by Bhasker Kode)Bhasker Kode
Lightning Talk by Bhasker Kode from Helpshift on instrumenting your golang code to a statsite compatible server. with examples, screenshots, and getting started.
FregeDay: Design and Implementation of the language (Ingo Wechsung)Dierk König
Talk by Ingo Wechsung at the FregeDay 2015, Sept 11th, Basel, Switzerland, covering general characteristics of the language, history, and important design decisions.
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...Dierk König
Diskusssion of what kind of differences there are between Haskell 2010 and Frege, how difficult they are to resolve, what their impact is, and what to do about them. Also: how to allow essential differences that will never work outside the JVM and demarcate them from supposed-to-be vanilla Haskell.
ANTLR educational slides. The slides provide a simple introduction to ANTLR, a parser generator and a language application development framework.
By Morteza Zakeri.
PostgreSQL's is one of the finest database systems available.
The talk will cover the history, the basic concepts of the PostgreSQL's architecture and the how the community behind the "the most advanced open source database" works.
This fun session covers some of the new language features found in C# 6.
This session was presented as part of the Microsoft South Africa Dev Day roadshow in March 2015.
More info at: http://www.sadev.co.za/content/slides-my-devday-march-2015-talks
Why Social Data Deserves More of Your BudgetFalcon Social
Get the webinar playback here: http://fal.cn/Ku_O
Learn how social intelligence can help you predict customer needs, and maximise customer lifetime value.
Source code recovery is one of the most tedious, and interesting, tasks in reverse engineering. During the course of this talk, the author will talk about a tool being developed (on and off) since last year that aims to generate auto-compilable source code from binaries. The tool is currently working though it needs a lot more work.
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
The program reads data from two files, itemsList-0x.txt and .docxoscars29
The program reads data from two files,
itemsList-0x.txt
and
inventoryList-0x.txt
. File extensions on Linux may be arbitrary–i.e., these files could have been named with
.dat
as the extensions.
The first file,
itemsList-0x.txt
, lists all possible items. Each line represents one item in the form
id name
.
Example 1: Sample itemsList-0x.txt
0 Air 1 HP Potion 2 MP Potion 5 Iron Ore 3 Bow Tie 4 Dirt 6 Diamond Ore 7 Iron Ingot 8 Diamond 9 Diamond Block
The second file,
inventoryList-0x.txt
, lists each individual inventory–or storage chest–followed by a list of items.
Example 2: Sample inventoryList-0x.txt
# 5
- 1 10 - 2 5 - 3 2 # 6
- 4 3 - 5 27 - 6 44 - 7 55 - 8 1 - 9 4 - 4 3 # 2
- 2 5 - 9 4 - 8 1 - 5 2 - 10 5
Each line preceded by
#
denotes the start of a new inventory. Each line preceded by
-
denotes an item. The program creates a new inventory each time a
#
is encountered.
When a
-
is encountered, a stack of items, ItemStack, is created. The
ItemStack
is placed in the
Inventory
based on the following rules:
If the Inventory is empty, store the ItemStack, and
return true
.
If the Inventory is not empty, examine the Inventory.
If a matching ItemStack is found, merge the two ItemStacks and
return true
.
If no matching ItemStack is found, store the new ItemStack and
return true
.
If the Inventory is full,
return false
.
Through the magic of abstraction, this is not one function, but four (4) functions in total. Yes, it does seem unnecessary at first. However, each function does one thing and only one thing. This is an exercise in understanding the thought process behind abstraction, interfaces, and the
S
/
O
in
S.O.L.I.D
(with some C++ code) in a multi-ADT program.
Most of your time will be spent on understanding the abstractions (and interfaces) as opposed to spamming cobblestone blocks… I mean C++ code.
3.2 Output
The output consists of three reports written to standard output, one after the other.
A report listing items that were stored or discarded.
A report listing all valid items.
Finally, a detailed report is printed. listing data for each inventory:
Maximum Capacity–i.e., total slots.
Utilized Capacity–i.e., occupied slots
Listing of all items.
If the program is run with the provided input files, the following output should be generated…
Example 3: Sample Output
Processing Log: Stored (10) HP Potion Stored ( 5) MP Potion Stored ( 2) Bow Tie Stored ( 3) Dirt Stored (27) Iron Ore Stored (44) Diamond Ore Stored (55) Iron Ingot Stored ( 1) Diamond Stored ( 4) Diamond Block Stored ( 3) Dirt Stored ( 5) MP Potion Stored ( 4) Diamond Block Discarded ( 1) Diamond Discarded ( 2) Iron Ore Item List: 0 Air 1 HP Potion 2 MP Potion 3 Bow Tie 4 Dirt 5 Iron Ore 6 Diamond Ore 7 Iron Ingot 8 Diamond 9 Diamond Block Storage Summary: -Used 3 of 5 slots (10) HP Potion ( 5) MP Potion ( 2) Bow Tie -Used 6 of 6 slots ( 6) Dirt.
Why I like PHPStorm
Advantages of Using Docker
Client, Docker Host, Registry
Docker Usage
Solr Docker File
Every Day Docker Commands
Docker Search
One Line Scripts
Portainer
Kinematic
Docker Compose
Grafana
Coding style guide
PHPCS/MD
Documentation Rules
Xdebug
Postman
Dart is a new language for the web, enabling you to write JavaScript on a secure and manageable way. No need to worry about "JavaScript: The bad parts".
This presentation concentrates on the developer experience converting from the Java based GWT to Dart.
1. Function Argument detection
proposed on : 09.04.2016
Ahmed mohamed abd el Mawgood <IRC/telegram/Github @oddcoder>
email: <ahmedsoliman0x666[at]gmail[dot]com>
<ahmedsoliman[at]oddcoder[dot]com>
Blog: <oddcoder.com>
Abstract
Function is considered to be the basic code construction block. However, Radare2 is not
good at detecting anything beyond basic functions. Things like structures, OS specific
data types, function names are mostly unrecognized by Radare2 (with exceptions).
Adding support for this very feature will make Radare typical for static analysis for
malware , and reverse engineering. In general it will attract more users and build
concrete alternative to other commercial Software reverse engineering tools like
HexRays’s IDA pro, Hopper.
Motivation
The benefits claimed by Google fit perfectly into all tasks offered by every other
organization. But what makes this task special for me is that it is the only task I wanted to
be done one day. And I got the chance to do it myself. Typically, I will be doing something
that probably many of the Radare2 community and myself will use on daily basis. What I
will really be looking forward to do it to prepare myself to be Mentor at GSoC at radare2.
If this task is taken I don’t think that their is another task that fits me.But suggestions will
be put in consideration.
Specifications
● All the work will be available online on my fork for Radare2 and
Radare2-regressions.
● I am from Alex- Egypt the time zone is UTC+02:00gm
● Work will be pushed to the the main repo as soon as a functional piece of code is
written and debugged.
2. ● I will start working on the task early (typically I will start coding on 22 April 2016
once google announce the results to save time as my final exams will start on 28
May and end on 16 June).
● Progress will be tracked on my personal blog oddcoder.com every friday and real
time on IRC/telegram channel.
● work will be 7-9 hours daily except for friday(weekend freeday).
Major Goals
1. Writing tests for the t command family and the corresponding pf commands and
enhancing them (issue #287, #2189, #3115).
2. Enhancing support for variations of the fastcall calling convention (issue #4204).
3. Supporting Naming local variables on the stack (issue#3735).
4. Type propagation (MAIN INITIAL TASK) (issue #4291)
a. When a local var is passed as an argument, the type must be inferred.
b. This must be done in a separate analysis command, because it needs
functions to be already analyzed to run. `aft` -> analyze function type or
`afp` analyze function propagations.
i. Input for this command is offset of a function. must walk its local var
usages and function argument passing
ii. output must be a list of r2 commands to register those arg types for
the functions called.
c. To analyze all type propagations just `aft @@ fcn*` (for example)
Optional Goals
1. Creating windows types,functions pre-compiled headers (issue #1883, #3654,
#3925).
2. Creating POSIX types,functions pre-compiled headers.
Timeline
Before 23 April 2016
I will study the parts I will be working on, this will be defined by:
● Understanding how pf command works and its implementation(only subset
related to tcommand family).
3. ● Understanding how t commands works and understand its implementation
in the code.
● Understanding the anal (analysis subsystem) found in libr/anal/*.c ,
(libr/anal/types.c and libr/anal/fcn.c), , libr/anal/var.c , libr/core/cmd_anal.c)
● Understanding Radare2 lists libr/include/r_list.h
● Research about fastcall calling conventions and refresh my memory about
it.
● OPTIONAL:Understanding SDB. The docs
23 April-30 April:
● Writing Tests/fixing all of the following t, to, t-, tf, td, tb, te, tl, tk
● Implement td
● Fixing t*
● Writing tests for both tdand t*
● implementing(or fixing the existing implementation of) ts
1May-10 May
● Creating afA that extract function parameters from registers in case of
fastcall only with similar behavior to that of afa.
● Creating test cases to test for the correct implementation using existing
binaries in radare2-regressions and possibly but not mandatory specifically
crafted binaries.
● OPTIONAL: merging both afa and afA so user will not need to think which
to use.
11 May-23 May:
● Studying the behaviour of -fomit-frame-pointerin gcc.
● Adding support for naming local Variable compiled with
-fomit-frame-pointerunder gcc.
● Writing Tests for functions compiled with -fomit-frame-pointer.
● OPTIONAL:adding support for similar under different compiler typically
MSVC.
23 May-16 June:
● I will have to stop and prepare for my final exams
17 June- 5 August:
● Researching on the best way to store the list of local variables (pros/cons).
● Creating a list for the usage of ebp based local variables/formal
arguments.
● Creating a list for the usage of esp based local variables/formal arguments.
● Creating a list for the usage of fastcall style local variable/formal argument.
● Implementing type inference algorithm for the variable (decision making)
● Re-implementing Type inference,variables enumerating but with recursively
4. ● Implementing intel x86 architecture specific type inference algorithm
● Writing tests for everything
5 August-15 August:
● Cleaning the code.
● Fixing Coverity Scanerrors.
● Adding missing tests.
● Responding to issuesrelated to my code.
15 August-20 August:
● OPTIONAL:Creating windows types and functions pre-compiled (into SDB)
headers.
● OPTIONAL:Creating POSIX compatible OS types and functions precompiled
header.
Micro-Tasks solved:
I have made bunch of commits to the codebase Radare2 and Radare2-regressions. My
goal was to demonstrate both coding speed / ability to adopt & work with unknown code
base within short time.
All my commits are referenced hereand heremost notable are :
● Adding initial support for pic18c disassembler
● pic18c analysis plugin (coloring)
● enhancing the jump instruction family
● adding tests for pic
GSoC experience:
This is my first time to apply at Google summer of code. Last year I wanted to apply but I
didn’t because I thought I was not prepared enough. This year I applied only for this one
task. The reason is that their is no any other project that is Reverse engineering and code
analysis based.