顯示具有 X86 標籤的文章。 顯示所有文章
顯示具有 X86 標籤的文章。 顯示所有文章

2010年11月11日 星期四

OS case stusy

1.mm(virtual memory -> physical memory) GDT ( Global Descriptor Table )
  • 0 NULL
  • 1 kernel code
  • 2 kernel data
  • 3 user space code
  • 4 user space data
entry point
  • base -> entry address
  • limit -> entry size
ex: gdt_set_gate(0, 0, 0, 0, 0); // Null segment gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); // Code segment gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); // Data segment gdt_set_gate(3, 0, 0xFFFFFFFF, 0xFA, 0xCF); // User mode code segment gdt_set_gate(4, 0, 0xFFFFFFFF, 0xF2, 0xCF); // User mode data segment IDT(interrupt description table) Faults, traps and exceptions ex:
  • 0 - Division by zero exception
  • 1 - Debug exception
  • 2 - Non maskable interrupt
  • 3 - Breakpoint exception
TSS(task state segment) @ system_call store each tasks info to kernel schedule , such as eax,ebx,esp... ex: // A struct describing a Task State Segment. struct tss_entry_struct { u32int prev_tss; // The previous TSS - if we used hardware task switching this would form a linked list. u32int esp0; // The stack pointer to load when we change to kernel mode. u32int ss0; // The stack segment to load when we change to kernel mode. u32int esp1; // Unused... .... } paging @ virtual memory call block -> used hole -> unused level directory -> tables(1024) -> entries(1024) frame @ physical memory call 2.VFS and the initrd VFS (virtual file system) define the file loc, uid, and i_node link list ex : /usr/bin/ -> ./ls /dev/tty/ initrd (initial ramdisk) boot image loc floop, disc, usb, ... linux 0.0.1 http://kerneltrap.org/Linux/Dusting_Off_the_0.01_Kernel http://www.cppblog.com/jake1036/archive/2010/11/13/133530.aspx http://mapopa.blogspot.com/2010/07/error-bad-register-name-sil.html http://manpages.ubuntu.com/manpages/gutsy/man1/as86.1.html http://www.cppblog.com/jake1036/archive/2010/11/13/133530.aspx JAME'S micro kernel http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html http://www.osdever.net/tutorials/index http://en.wikipedia.org/wiki/Task_State_Segment http://www.faqs.org/docs/Linux-HOWTO/KernelAnalysis-HOWTO.html#ss5.4 x86 instruction set http://siyobik.info/index.php?module=x86 nasm http://www.nasm.us/doc/nasmdoc0.html

2010年6月1日 星期二

A1100 @ VIA

公商服務時間.......XD 難得小弟的公司推出的新產品 A1100...... 目前主打DIY 的x86市場, 又搭載著 VIA NANO 處理器, 外加 HDMI 的輸出. 在影音方面應該是最大的附加價值. 推薦給有需要得朋友. PS: 目前用A1100 上 Ubuntu 9.0.4...XD 本來要安裝10.0.4, 可是Drivr 還沒有更新到那麼新....就只好將就點. 底下是產品規格.
處 理器

1.2GHz威盛64位元Nano™處理器 800MHz外頻時脈速度 1MB L2快取記憶體

晶片組 威盛 VX855南北橋合一多媒體 IGP 整合型晶片組
記憶體 1個 DDR2 533/667/800MHz SDRAM SO-DIMM 插槽,200針腳
顯示規格

內建威盛Chrome9™ HCM 3D/2D繪圖顯示核心,支援包括MPEG-2/4、WMV9及H.264等影像格式解碼技術

儲存介面

內建一個可裝44針腳DOM的IDE連接介面 內建一個可裝2.5吋硬碟或固態硬碟的連接介面 內建一個可加裝SD讀卡機的插槽 (選購)

作業系統 支援Windows 7 / XP / XP Embedded,Linux
網路晶片 內建威盛VT6122高速乙太網路晶片
網路埠 內建一個RJ-45連接埠
USB埠 配備四個USB2.0標準埠,一個USB2.0資料傳輸埠
音訊介面 一個耳機孔,一個錄音孔,一個麥克風輸入插孔
顯示器介面 配備一個HDMI埠及一個 VGA埠
前面板 LED 指示燈

硬碟狀態指示燈、開機指示燈 1 x Power on indicator

無線網路 支援IEEE-802.11b/g網路輸規格 (選購配件)
輸入電伏 直流電12V
電源 100~240 V AC/DC 轉接器
系統體積 寬14.6公分、高5.2公分、機身9.9公分長
系統重量 0.6公斤 (不含硬碟)
Ref : http://www.viatech.com.tw/tw/products/embedded/artigo/a1100/index.jsp

2010年4月7日 星期三

acer 5560 sawed

Pic Ref:
沒想到筆電的CMOS電池會沒電.真是有點扯..... 只好來把它肢解一下.... 好在現在又可以work了... PS: 不知道拿給acer修理要多少錢阿.... 看來自己修理應該是最省的

2010年2月26日 星期五

OllyICE 4 PassWord hack

  1. OllyICE 可以模擬X86的Machine code,藉由Assembly的分析,找出斷點跟Register的status,達到PassWord hack. OllyICE支援軟體除錯、脫殼、分析算法 ... (破解) Ref http://forum.slime.com.tw/thread224674.html 詳細說明文件請上網google
  2. 這邊我們就以最簡單的方式來做教學, sample code 判斷輸入的值是否為 "1234", 確定就Pass.
  3. 打開OllyICE, 載入a.exe檔,因為我是用Cygwin內的gcc compiler出來的,所以要加入Cygwin的路徑,不然會fail,如果你是在Dos底下,請把Sample code抓回去,自己重新compiler一次. a.exe : 自行complier,THX sample code : http://sites.google.com/site/funningboy/perl_code/guess.c?attredirects=0&d=1
  4. 先按F9 run 一次,猜猜看程式的架構,發現會斷在 0040114E . /0F84 9C010000 je 004012F0 在console會出現input password的字樣. 就先隨便打入猜一下輸入的格式. 發現只要是chart的型態會出現無窮回圈,如果全int會跳過,表示輸入的PassWord是0~9的數字組合.
  5. 再透過查找關鍵字的方式,回推出Program所在的Address區段 按右鍵 search for -> all referenced text strings , 發現關鍵字, Pass Ok.得知記憶體的區段位置
  6. 再回到Assembly code的位置,發現 00401089 . 817D FC D2040>cmp dword ptr [ebp-4], 4D2 ; 要經過cmp才能夠往下走,所以在cmp這邊做斷點check.如果Pass,就會走到 00401092 . C70424 332040>mov dword ptr [esp], 00402033 ; ASCII "Pass Ok",LF. 所以我們就拿4D2當作input PassWord看看,發現可以走道Pass OK. 而4D2轉成10進位得1234,就大概可以猜出是否是PassWord. 或者是改JP的位置,直接跳過Check到PassOk,如果能直接跳到Pass Ok,就表示在Check的loop一定是輸入Pass Word的地方.
  7. 關掉OllyICE,重新打開a.exe,輸入1234就OK了 Ref: http://www.pediy.com/