⑴ 單片機里的程序怎麼讀取出來
你好,這個只有專業人員可以做到,謂之「單片機的解密」
現在單片機加密越來越強,stc公司的51單片機已經懸賞20萬尋求破解
程序在下載進入單片機時已經經過加密。因此逆向讀取程序是幾乎不可行的
這個不可行不僅是基於軟體程序,更是基於硬體的層面
⑵ STC單片機ISP如何讀取文件 我看到的好像只能燒寫
STC的單片機 只能寫,不能讀,,因為廠家沒有公開 讀單片機內部程序的方法
⑶ 如何把STC單片機里的代碼讀出來
這個需要單片機解密
單片機解密
單片機解密又叫單片機破解,晶元解密,IC解密,但是這嚴格說來這幾種稱呼都不科學,但已經成了習慣叫法,我們把CPLD解密,DSP解密都習慣稱為單片機解密。單片機只是能裝載程序晶元的其中一個類。能燒錄程序並能加密的晶元還有DSP,CPLD,PLD,AVR,ARM等。當然具存儲功能的存儲器晶元也能加密,比如DS2401 DS2501 AT88S0104 DM2602 AT88SC0104D等,當中也有專門設計有加密演算法用於專業加密的晶元或設計驗證廠家代碼工作等功能晶元,該類晶元業能實現防止電子產品復制的目的。
單片機攻擊者藉助專用設備或者自製設備,利用單片機晶元設計上的漏洞或軟體缺陷,通過多種技術手段,就可以從晶元中提取關鍵信息,獲取單片機內程序這就叫單片機解密。
解密過程
揭去晶元封裝
侵入型攻擊的第一步是揭去晶元封裝(簡稱「開蓋」有時候稱「開封」,英文為「DECAP」,decapsulation)。
有兩種方法可以達到這一目的:
第一種是完全溶解掉晶元封裝,暴露金屬連線。
第二種是只移掉硅核上面的塑料封裝。
第一種方法需要將晶元綁定到測試夾具上,藉助綁定台來操作;第二種方法除了需要具備攻擊者一定的知識和必要的技能外,還需要個人的智慧和耐心,但操作起來相對比較方便,完全家庭中操作。
晶元上面的塑料可以用小刀揭開,晶元周圍的環氧樹脂可以用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉晶元封裝而不會影響晶元及連線。該過程一般在非常乾燥的條件下進行,因為水的存在可能會侵蝕已暴露的鋁線連接 (這就可能造成解密失敗)。
清洗晶元
接著在超聲池裡先用丙酮清洗該晶元以除去殘余硝酸,並浸泡。
尋找保護熔絲的位置並破壞
最後一步是尋找保護熔絲的位置並將保護熔絲暴露在紫外光下。一般用一台放大倍數至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進去,來尋找保護熔絲。若沒有顯微鏡,則採用將晶元的不同部分暴露到紫外光下並觀察結果的方式進行簡單的搜索。操作時應用不透明的紙片覆蓋晶元以保護程序存儲器不被紫外光擦除。將保護熔絲暴露在紫外光下5~10分鍾就能破壞掉保護位的保護作用,之後,使用簡單的編程器就可直接讀出程序存儲器的內容。
對於使用了防護層來保護EEPROM單元的單片機來說,使用紫外光復位保護電路是不可行的。對於這種類型的單片機,一般使用微探針技術來讀取存儲器內容。在晶元封裝打開後,將晶元置於顯微鏡下就能夠很容易的找到從存儲器連到電路其它部分的數據匯流排。由於某種原因,晶元鎖定位在編程模式下並不鎖定對存儲器的訪問。利用這一缺陷將探針放在數據線的上面就能讀到所有想要的數據。在編程模式下,重啟讀過程並連接探針到另外的數據線上就可以讀出程序和數據存儲器中的所有信息。
藉助顯微鏡和激光切割機破壞保護熔絲
還有一種可能的攻擊手段是藉助顯微鏡和激光切割機等設備來尋找保護熔絲,從而尋查和這部分電路相聯系的所有信號線。由於設計有缺陷,因此,只要切斷從保護熔絲到其它電路的某一根信號線(或切割掉整個加密電路)或連接1~3根金線(通常稱FIB:focused ion beam),就能禁止整個保護功能,這樣,使用簡單的編程器就能直接讀出程序存儲器的內容。
雖然大多數普通單片機都具有熔絲燒斷保護單片機內代碼的功能,但由於通用低檔的單片機並非定位於製作安全類產品,因此,它們往往沒有提供有針對性的防範措施且安全級別較低。加上單片機應用場合廣泛,銷售量大,廠商間委託加工與技術轉讓頻繁,大量技術資料外瀉,使得利用該類晶元的設計漏洞和廠商的測試介面,並通過修改熔絲保護位等侵入型攻擊或非侵入型攻擊手段來讀取單片機的內部程序變得比較容易。
⑷ 如何讀取STC單片機的ID號碼
這個是通過串口讀出ID號
//讀內部R/C時鍾及ID號C語言參考程序
#include<reg51.h>
#include<intrins.h>
sfr IAP_CONTR = 0xC7;
sbit MCU_Start_Led = P1^7;
//unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55};
#define Self_Define_ISP_Download_Command 0x22
#define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps
void serial_port_initial();
void send_UART(unsigned char);
void UART_Interrupt_Receive(void);
void soft_reset_to_ISP_Monitor(void);
void delay(void);
void display_MCU_Start_Led(void);
void main(void)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned char idata *idata_point;
serial_port_initial(); //串口初始化
// display_MCU_Start_Led(); //點亮發光二極體表示單片機開始工作
// send_UART(0x34); //串口發送數據表示單片機串口正常工作
// send_UART(0xa7); //串口發送數據表示單片機串口正常工作
idata_point = 0xF1;
for(j=0;j<15;j++)
{
i = *idata_point;
send_UART(i);
idata_point++;
}
while(1);
}
void serial_port_initial()
{
SCON = 0x50; //0101,0000 8位可變波特率,無奇偶校驗位
TMOD = 0x21; //0011,0001 設置頂時器1為8位自動重裝計數器
TH1 = RELOAD_COUNT; //設置定時器1自動重裝數
TL1 = RELOAD_COUNT;
TR1 = 1; //開定時器1
ES = 1; //允許串口中斷
EA = 1; //開總中斷
}
void send_UART(unsigned char i)
{
ES = 0; //關串口中斷
TI = 0; //清零串口發送完成中斷請求標志
SBUF = i;
while(TI ==0); //等待發送完成
TI = 0; //清零串口發送完成中斷請求標志
ES = 1; //允許串口中斷
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k = 0;
if(RI==1)
{
RI = 0;
k = SBUF;
if(k==Self_Define_ISP_Download_Command) //是自定義下載命令
{
delay(); //延時1秒就足夠了
delay(); //延時1秒就足夠了
soft_reset_to_ISP_Monitor(); //軟復位到系統ISP監控區
}
send_UART(k);
}
else
{
TI = 0;
}
}
void soft_reset_to_ISP_Monitor(void)
{
IAP_CONTR = 0x60; //0110,0000 軟復位到系統ISP監控區
}
void delay(void)
{
unsigned int j = 0;
unsigned int g = 0;
for(j=0;j<5;j++)
{
for(g=0;g<60000;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void display_MCU_Start_Led(void)
{
unsigned char i = 0;
for(i=0;i<3;i++)
{
MCU_Start_Led = 0; //頂亮MCU開始工作指示燈
delay();
MCU_Start_Led = 1; //熄滅MCU開始工作指示燈
delay();
MCU_Start_Led = 0; //頂亮MCU開始工作指示燈
}
}
⑸ 如何將stc15w404asIC內程序讀出
stc15w404as是用STC專用的燒錄軟體stc-isp燒錄程序的,就是只能燒錄程序,卻不能讀取程序的。目前也沒有第三方的讀取程序的軟體。而且,STC官方聲明,目前STC15系列單片機還不能解密。所以,燒錄的程序是不可能讀取出來的。
即內部程序是不可能讀出的。
⑹ stc89c52單片機程序怎麼讀出來
你是要讀出stc89c52單片機裡面的程序嗎?
這是不可能的,STC單片機只能下載程序,即燒錄程序,是不能讀回程序的。
有的單片機,破解後是可以讀出裡面的程序的。但讀出的是機器碼,即二進制代碼程序,需要反匯編成匯編程序。如果你對匯編程序不太懂,就是反匯編出來也沒有用啊。
⑺ stc 單片機利用ADC讀取按鍵測試程序
ADC 得到的是模數轉換的結果,950、550、700 就是相應的模擬量。。。。。。
⑻ 怎樣把單片機里的程序讀取出來和把程序寫進單片機
1 首先將編寫的程序經模擬軟體調試好,然後編譯保存為HEX文件格式。
2 使用編程器(也叫燒寫器)先選擇晶元的廠家,晶元型號。
3 裝在要燒寫到程序代碼(HEX文件格式)
4進行晶元空白檢查
5選擇編程(進行下載)
6對比檢查(成功)
當然 也可以選擇自己做一個某個晶元的專用的燒寫器。
⑼ 如何讀取STC單片機內部沒加密的程序
如果單片機未加密的話,那麼用編程器可以讀出來,如果已加密,那麼需要解密後才能讀出來
⑽ 怎樣讀取STC單片機中的內容下載時怎麼老顯示已加密我不想加密怎麼設置有掉電數據保存功能嗎怎麼用
下程序的時候無意中勾選了加密晶元吧
或者這個片子不是你的 別人寫好了
加密後就不能讀取了
換片吧