Kernel, Virus and Programming

Running peter-dwarf tutorial

This is the tutorial for running testing program for peter-dwarf, there are two programs inside the jar, first one is a command-line program to test peter-dwarf functions, the second one is a program with GUI. 1) Running the command line program This will print out the function name contain the address 0x1600300 in file “kernel”…
Read more

2016/01/03 0

dwarf is too much for c++

One side effect about changing the kernel from c to c++ is that: in the kernel file, the number of dwarf information will increase dramatically from 1,000 to 1,550,000. This let the peter-dwarf parser work slowing to build a tree to display it (But the dwarf parsing still fast). I added the parameter in PeterDwarfPanel…
Read more

2016/01/02 0

bug that super hard to fix, but i fixed it

!!! Nobody can read the dwarf specification and write the dwarf parser without hacking the binutils lab. Dwarf is just too complex and lots of algorithms in it. Now i can use peter-dwarf to parse out my c++ kernel. The dwarf stub that generated by c++ is *MUCH* more complex the c. fixed these…
Read more

2015/12/16 0

peter-dwarf has bug to decode c++ dwarf file

peter-dwarf has bug to decode c++ dwarf file read count : 30

2015/12/15 0

my way to compile binutils in mac

read count : 21

2015/12/15 0

Is it a bochs bug? bochs forgets to translate linear addr to physical addr?

Is it a bochs bug? bochs forgets to translate linear addr to physical addr? read count : 80

2015/11/30 1

describe how to exact bytes from memory

my colleague suggested me to use this method to describe how to exact bytes from memory: using pairs of 2-numbers. The formula is that: So if the formula is “1,2”, then x1 is 1, y1 is 2 . That mean it will exact 1 byte then jump to 2 offset and keep do it repeatedly.…
Read more

2015/11/27 0

GKD debugger shortcut

GKD debugger shortcut read count : 50

2015/11/22 0

Fixed one important bug in grub

I am doing kernel development in mac, my kernel is loaded up by grub because it relay on multiboot spec. I was unable to install grub in a loopback device on mac, so my mac is running a small linux vm in virtual box, i write a simple php to let me upload my kernel,…
Read more

2015/11/14 0

Defining Scalable OS Requirements for Exascale and Beyond

Defining Scalable OS Requirements for Exascale and Beyond Robert W. Wisniewski, Chief Software Architect for Extreme Scale Computing, Intel Defining Scalable OS Requirements for Exascale and Beyond Over the past couple of decades two primary trends have driven system software for supercomputers to become significantly more complex. First, hardware has become more complex. Massive inter-node…
Read more

2015/11/12 0

just bought stm32 nucleo

just bought stm32 nucleo, learning Cortex-M. But my final target is Cortex-A, i am more interesting in general-OS than rtos. read count : 61

2015/11/11 0

newlib linker script summary for you own executable

After i build my newlib by “../newlib-2.1.0/configure –target=$TARGET –prefix=$PREFIX”, except the libc.a and crt0.o, i got these linker scripts. I am still thinking which one i should use for my own executables in my OS. elf_i386.x Default linker script, for normal executables elf_i386.xbn Script for -N: mix text and data on same page; don’t align…
Read more

2015/10/23 0

YEAH, page tables is ok now

After 100 times of failure, i finally loaded a exe into an independent address space (independent page tables and LDT). I meet all kind of failures: wrong page directory, wrong page table, wrong virtual address mapping, wrong code selector, wrong LDT, etc… read count : 174

2015/10/22 1

A guide to how the FreeBSD kernel manages the IA32 processors in Protected Mode

Download : A guide to how the FreeBSD kernel manages the IA32 processors in Protected Mode read count : 209

2015/09/29 0

Kernel can load up all segments to correct v-addr and p-addr now

Kernel can load up all segments to correct v-addr and p-addr now read count : 208

2015/09/29 0

Tutorial : import svn with all history into github

Tutorial : import svn with all history into github Step 1) Create a project on github Step 2) Init the github project by : Step 3) git clone <— replace your project url Step 4) cd to that directory Step 5)  user and run: Step 6) svn2git –rebase Step 7) git pull Step…
Read more

2015/09/22 0

All svn history for peter-bochs debugger

Its time to keep track of all history, peter-bochs change svn server for a few times. Here are all svn history: peter-bochs-self-host  <– peter-bochs svn history hosted in my own server peter-bochs-google <– peter-bochs svn history hosted in google code gkd <– peter-bochs renamed to GKD, svn history hosted in my own server read count : 106

2015/09/22 0

Netbeans – Maven Runner

Eclipse has a great plugin call “Eclipse runner” , i found out netbeans doesn’t have any similar one. So i develop one for netbeans. You can add maven goals under the tree node of any project. Double click the goal name will run maven in netbeans. You can download it from, or search “Maven…
Read more

2015/09/16 5

ported libelf

finally ported libel to my os, my linker script won’t warn me I crossed the kernel boundary. So libelf’s variables becoming exist in a memory area that they shouldn’t be there. read count : 90

2015/09/13 0

This battery save my apple magic mouse

When you change your mouse from logitech mouse to magic mouse, the first feeling is that magic mouse is much much heavier. This battery save my apple magic mouse, although it has lesser mah, but it is 5 times lighter than normal battery, so i much my magic mouse much lighter weight. And it is only…
Read more

2015/09/08 0

Enable peter-swing theme in netbeans

Edit : /Applications/NetBeans/NetBeans Change the line to: read count : 88

2015/09/06 0

Enhancement of the OS debug format, support scripting

OS debug format is a xml based document stays in memory of the emulator, brining out the debug information in real time to the debugger, make the debugger understand what data structure they want to debug. In the early stage of kernel debugger, people rely on printk to dump out the debug information. At that…
Read more

2015/09/05 0

Originally from , it is a super professional article that explain the LD process. 08 Jan 2015 by David Corvoysier A few months ago I stumbled upon a linking problem with secondary dependencies I couldn’t solved without overlinking the corresponding libraries. I only realized today in a discussion with my friend Yann E. Morin that not only did I use the…
Read more

2015/09/02 0

Amazing recording feature by specific which code-block you want to record

In the original GKD design, it works with bochs instrumentation. Being helped ( by the author of bochs (Mr Stanislav Shwartsman ) emulator, now we can use the prefetch instruction to specific which code-block you want to record, it becomes even more useful now. Every code surrounded by PREFETCHT0 and PREFETCHT1 instruction, GKD will record jumping instruction…
Read more

2015/08/20 0

handling exception 7

the easiest way to handle exception 7 is to execute clts then iret. My kernel was crashed because it generated a exception 0x7. read count : 90

2015/08/19 0

GKD can dump the exceptions now

GKD can dump the exceptions now, it helps me to trace what happened to my kernel read count : 117

2015/08/13 0

hard to theme netbeans perfectly

It is hard to theme netbeans using traditional swing look & feel. The reason is netbean’s tab container is not traditional swing JTabbedPane. See the post Netbeans use a AbstractViewTabDisplayerUI to support only few “default look & feel”, such as Metal, Nimbus, Aqua. see below: The problem is : This default look & feel tab container…
Read more

2015/08/06 0

Peter-swing java look & feel read count : 121

2015/08/03 0

grub is slow on bochs

if grub is running slowly on bochs, try to add “–no-rs-codes” to your grub-bios-setup command. It will be 0.5 sec versus 5 seconds different. read count : 110

2015/08/02 0

gcc can’t handle too much #if macro

gcc can’t handle too much macro (#if, #define), the output dwarf will have wrong line number. So when you disassemble the assembly with c/c++ source, everything are wrong, including wrong line number, wrong assembly code to c source code, duplicated c/c++ line.   In GKD, i add an on/off button to filter out those…
Read more

2015/08/02 1

GKD is running fast with bochs instrumentation stub now

GKD is running fast with bochs instrumentation stub now, it captures all jmp/call/int/ret, all instructions that change you EIP. I am using H2 as the backbone database, every second can records over 100,000 instruction, which is pretty fast. Turn on subtitle when you are watching it: read count : 119

2015/07/26 0

Nazi gun tower

read count : 159

2015/07/13 0

Getting the parameters by parsing the dwarf directly

I used another two months to getting correct location of each parameter of a functions. Mission sounds stupid, the timeframe i spent sounds stupid. If I use GDB, i perhaps never know how parameters are stored in memory. Now i know how computer ACTUALLY works. People think the parameters are store in the stack, and…
Read more

2015/07/07 0

libelf include issue

When you meet this: Just comment out the following line in /toolchain/include/libelf/sys_elf.h When I build the libelf in mac and in linux, the output sys_elf.h is different, in mac, the above line is not exist, so my OS is able to compile. Peter. read count : 171

2015/06/30 0

How to lookup the value of each parameter from dwarf and memory location

Here are the steps to lookup the parameter value 1) Look into the “info” section from dwarf, “objdump –dwarf=info”. There is a die DW_AT_LOCATION (DW_OP_freg:0), telling you the offset to the frame register. 2) Look at the CIE from .eh_frames section, “objdump –dwarf=frames”. It will tell you the formula of calculating the CFA, such as…
Read more

2015/06/18 1

Linux view csv command

alias csv=’column -s, -t’ csv your_file read count : 182

2015/06/16 0

Successfully decode .eh_frame

Successfully decode .eh_frame, now able to calculate the base offset of each parameter, can keep going on profiling feature of GKD read count : 277

2015/05/27 0

objdump 2.24 has bug

objdump 2.24 has bug, but this bug is fixed in 2.25. It dump the wrong address for my 32 bits kernel. read count : 301

2015/05/22 1

Decoded first two instructions of .eh_frame

Decoded first two instructions of .eh_frame, dwarf spec is lack of detail, need to hack into the objdump to understand each byte, it is time consuming. read count : 335

2015/05/12 1