Flag: Tornado! Hurricane!

 Forums >>  Brainstorms - General  >>  Has Anybody Played with Flayer (Taint Analysis and Flow Alteration Tool)?

Topic created on: September 18, 2007 04:56 CDT by ero .

They announced flayer in a post on Google Security's blog.
The paper detailing the tool was presented on woot07.

Just wondering if anyone has played with it and has some thoughts to share.

  jms     September 18, 2007 11:23.10 CDT
Haven't played with this tool yet, but it looks interesting.

  LordMole   September 22, 2007 13:16.43 CDT
it gave me some ideas. it makes it easy to confirm how crappy some protection mechanisms are. this is a script for auto-skipping flexlm on ICC (available for free  anyhow)


#!/bin/bash
# icc_crack.sh:  icc uses flexlm.  This  traces functions involved in the
# license check and forcibly skips the final validation (on success).

# Setup stuff from icc's run script
INTEL_LICENSE_FILE=""
INSTALLDIR=/path/to/cc/9.1.038
LD_LIBRARY_PATH="$INSTALLDIR/lib:${LD_LIBRARY_PATH}"
DYLD_LIBRARY_PATH="$INSTALLDIR/lib:${DYLD_LIBRARY_PATH}";
PATH="$INSTALLDIR/bin:${PATH}";
export PATH DYLD_LIBRARY_PATH LD_LIBRARY_PATH INSTALLDIR INTEL_LICENSE_FILE
export -n IA32ROOT; unset IA32ROOT;

# grabbed from the web
# -----------------------------------------------------
# The HOSTID -- [DEMO|ANY|HOSTNAME=$HOSTNAME|USER=$USER]?
# uncounted -- no need for a server.
# 1-jan-0 -- default infinite license.
# 1-jan-1990 from $(strings iccbin)
# 9999.9999 is an arbitrarily high version number
# "CCompL" was given by FlexLM error messages
# "intel" wad just guessed
cat <<EOF > $INSTALLDIR/bin/cracked.lic
INCREMENT CCompL intel 9999.9999 1-jan-0  \\
uncounted permanent \\
HOSTID=ANY ISSUED=1-jan-1990 ISSUER=lordMOLE NOTICE="Enjoy" \\
SN=00000000000000000000000000000000 START=1-jan-1990 \\
SIGN=010101010101
EOF

function cleanup() {
  rm /tmp/icc.log &> /dev/null
  rm icctest.c icctest  &> /dev/null
}
trap cleanup EXIT

# run icc once under flayer tainting the license file
echo "!! performing exploratory run"
valgrind --tool=flayer --log-file-exactly=/tmp/icc.log --taint-file=yes \
                       --file-filter="$INSTALLDIR/bin/cracked.lic" \
                       --xml=yes \
                       $INSTALLDIR/bin/iccbin &> /dev/null

# get the instruction pointers and see if any are calls we can step over.
echo "!! extracting interesting instruction pointers"
ips=$(grep \<ip\> /tmp/icc.log | # Grab the ips from the xml output
  cut -f2 -d\> |
  cut -f1 -d\< |
  grep 0x8 |
  sort  |
  uniq -c |
  sort -rn  |
  head -30 | # top 30
  tr -s ' ' |
  cut -f3 -d' ' |
  sed 's/\(.*\)/\1:1\n\1:0/g')

# make a test C file
cat <<EOF > icctest.c
#include <stdio.h>
int main() { return printf("cracked\n"); }
EOF

echo "!! $(echo $ips | wc -w) candidates identified"
# Brute force our way to freedom!
trap "" ERR
cmd=""
p=("." "o" "0" "o" "."); r=0
echo -n "!! "
for action in $ips; do
  # no need to trace - use mkf
  cmd="mkf --alter-fn=$action $INSTALLDIR/bin/iccbin"
  echo -en "${p[$((r%5))]}${p[$((r+1%5))]}${p[$((r+2%5))]}${p[$((r+3%5))]}"
  (command $cmd icctest.c -o icctest &> /dev/null;:)
  if [[ -f icctest ]]; then
    echo -en "\r!! cracked in $r attempts"
    break
  fi
  r=$((r+1))
  action=""
done
echo

if [[ ! -z "$action" ]]; then
  echo "!! creating icc-cracked"
  echo "#!/bin/bash" > icc-cracked
  export >> icc-cracked
  echo "$cmd \"\$@\"" >> icc-cracked
  chmod +x icc-cracked
  echo -e "      . o\n   __m_v_m__  thanks you for your patronage\n   lord MOLE"
  exit 0
else
  echo "!! bad luck"
  exit 1
fi

Note: Registration is required to post to the forums.

Active in Last 5 Minutes
timtoady

There are 21,677 total registered users.


Recently Created Topics
PyEmu error when cal...
Sep/02
Restore Themida/Winl...
Sep/02
Anti-olly technique
Aug/30
RAR Password
Aug/29
Heap protection on W...
Aug/23
Why Inline asm in C+...
Aug/20
Bypassing OllyAdvance
Aug/17
Error in logic for g...
Aug/17
Has anyone seen this...
Aug/17
ARM Executable - Pat...
Aug/16


Recent Forum Posts
reverse engineering ...
raiden56
pydbg, memory breakp...
Researc...
RAR Password
Ineedhelp
RAR Password
cod
Heap protection on W...
voila
Heap protection on W...
j00ru
Heap protection on W...
voila
Heap protection on W...
j00ru
Heap protection on W...
psylocn
Why Inline asm in C+...
ronnie2...


Recent Blog Entries
meshmesh
Sep/01
Is it legal??

waleedassar
Aug/30
Anti-olly technique

QvasiModo
Aug/24
WinAppDbg 1.4 is out!

artemblagodarenko
Aug/18
Dataflow-0.2.0 released. Ne...

grzonu
Aug/17
Bypassing OllyAdvanced

More ...


Recent Blog Comments
tosanjay on:
Sep/02
PyEmu 0.0.2

GynvaelColdwind on:
Sep/01
Is it legal??

PeterFerrie on:
Aug/31
Anti-olly technique

dennis on:
Aug/26
Dr. Gadget IDAPython plugin

halsten on:
Aug/19
Dataflow-0.2.0 released. Ne...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit