Wednesday, July 22, 2015

nohup vs &


Saturday, May 16, 2015

LKM syscall links

Saturday, May 2, 2015

copy file with ssh without scp

text file

cat /tmp/aaa | ssh user@host "cat - > aaa"
ssh user@host cat < /tmp/aaa ">" aaaa

from remote to local
ssh user@host cat > /tmp/bbb "<" bbb

uuencode - encode a binary file

 -m     Encode  the  output using the MIME Base64

Saturday, April 18, 2015

GDB cross compiler

  • compile gdb static for mips /el

  • create build and source folders
  • download gdb 7.9 and termcap 1.3.1 to source folder
  • create cross compiler with buildroot or crosstool-ng (i used buildroot)

under build folder create sub folder 
(host)$mkdir -p build/termcap/mipsel
(host)$export CC=<path>/buildroot/output/mipsel/host/usr/bin/mipsel-linux-gcc
(host)$./configure --host=mipsel-linux --prefix='/<path>/build/termcap/mipsel/'
(host)$make install

gdb 7.9
(host)set PATH=/to/gcc/folder
(host)$cd to gdb-7.9 folder #don't run process from gdb subfolder see README
(host)$export CC=<path>/buildroot/output/mipsel/host/usr/bin/mipsel-linux-gcc
#set ld flags: static and point to termcap lib folder
(host)$export LDFLAGS="-static -L/<path>/build/termcap/mipsel/lib"
#set include to termcap include folder
(host)$export CFLAGS="-g -O2 -I/<path>/build/termcap/mipsel/include"
(host)$./configure --host=mipsel-linux --prefix='/<path>/build/gdb_mipsel' --disable-werror
(host)$make install

host: compiler prefix


Friday, April 17, 2015

first mips assembly


  • compile mips assembly with gcc
  • run in emulation

  • gcc: aboriginal cross compiler , mipsel
  • emulator: qemu-user-static

sudo apt-get install qemu-user-static

vim exit.S
#include <sys/regdef.h>
#include <asm/unistd.h>

.global main
        .set noreorder
        .cpload t9
        .set reorder
        li a0, 99
        li v0, __NR_exit

note: file ext must be capital S

include cross gcc in path or point run directly
$mipsel-gcc -o exit exit.S

copy qemu to chroot folder

$cp $(which qemu-mipsel-static) .
$sudo chroot . ./qemu-mipsel-static ./exit

/lib/ No such file or directory

we get error because we compile dynamicly and the lib folder not include in chroot folder

we need to bind the lib folder for outside the chroot to chroot location

$mkdir lib
$sudo mount --bind <path/to/cross_compile/lib> lib

$sudo chroot . ./qemu-mipsel-static ./exit


echo $?
99 # the return value for exit syscall

Thursday, April 9, 2015


Saturday, March 28, 2015

mips assembly

all instruction are 32 bit long
instruction fall into three categories:
R-type: register type instructions
I-type: immediate 
J-type: jump instructions


There are the list of instructions we'll look at.
  • beq Branches if the quantities of two registers are equal.
  • bne Branches if the quantities of two registers are NOT equal.
  • bgtz Branches if a quantity in a register is greater than zero (quantity is 32 bit, 2C).
  • bgez Branches if a quantity in a register is greater than or equal to zero (quantity is 32 bit, 2C).
  • bltz Branches if a quantity in a register is less than zero (quantity is 32 bit, 2C).
  • blez Branches if a quantity in a register is less than or equal to zero (quantity is 32 bit, 2C).
  • j Jump to an address
  • jr Jump to an address stored in a register
  • jal Jump to an address, and store the return address in a register.
  • jalr Jump to an address stored in a register, and store the return address in another register.

Friday, March 27, 2015

IDA Python


pycharm pro
  • copy pycharm-debug.egg from /path/to/pycharm/debug-eggs to remote computer if nessery
  • add code to IDA python script

import sys
import os
current_path = os.path.dirname(__file__)
egg_loc = os.path.join(current_path, "pycharm-debug.egg")
print egg_loc
import pydevd
pydevd.settrace("host ip/name", port=12345, stdoutToServer=True, stderrToServer=True)

  • config pycharm (Run/Debug Configuration)

add Python Remote Debug

  • Run Debug server


PyCharm remote debug

PyCharm Professional only (community with remote server)

Run/Debug Configuration

config server address and port listen

copy debug-eggs to remote computer
locate /path/to/pycharm/debug-eggs

add attach code to code under debug

4)run server

Monday, March 16, 2015

Buildroot "output" directory for multiple targets

mkdir device
cd device
make -C "/path/to/buildroot" O="`pwd`" menuconfig

Friday, January 9, 2015

qemu compile

ubuntu 14.04

apt-get install libglib2.0-dev zlib1g-dev

./configure --disable-kvm 
make install

run qemu

from squash root folder

qemu-mips -L . -strace path/to/app
qemu-mips -L . -strace usr/sbin/miniupnpd