㈠ 求一匯編語言所寫簡單數據加密程序(求急,加分)
去掉了那個中斷部分。
; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
Encode db '7846302951'
Prompt_Str1 db 'Please input the orical code: $'
Prompt_Str2 db 7,13,10,13,10,'The encode: $'
Prompt_Str3 db 13,10,13,10,'Please record the encode and than press any key to continue...$'
String db 20,?,20 p(?) ;明碼輸入緩沖區
Start: push cs
pop ds
push cs
pop es
Output Prompt_Str1 ;提示輸入明碼
cld
lea di,String ;明碼字元串地址
mov cx,20 ;明碼數字個數,可以不到20個數字,回車鍵結束明碼輸入
Read_Encode:mov ah,1
int 21h
cmp al,13 ;回車?
jz Disp_Encode
cmp al,'0'
jb Read_Encode
cmp al,'9'
ja Read_Encode
stosb
loop Read_Encode
Disp_Encode:mov cx,di
sub cx,offset String ;實際輸入的明碼數字個數
lea si,String ;明碼字元串地址
lea bx,Encode ;密碼地址
Encoding: lodsb ;讀入1位明碼
and al,0fh
xlat ;查表,取得對應的密碼
mov [si-1],al ;寫密碼
loop Encoding
mov byte ptr [si],'$' ;顯示字元串採用DOS調用,9號功能,要求字元串以「$」結尾
Output Prompt_Str2 ;提示顯示密碼
Output String ;顯示密碼
Output Prompt_Str3 ;提示用戶記錄密碼
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;結束程序
int 21h
Code ENDS
END Start ;編譯到此結束
補充回答:未知樓主要怎樣的原創,這個是我百分之百的原創。此前提供的連接,也是我百分之百的原創。不知樓主用什麼方法來判斷回答者的答案是否原創。
㈡ 關於加密的和反匯編的
問題1:理論上是這樣密鑰長度增加會增加加密演算法的強度,但是你的方法密鑰長度增加一倍攻擊難度也只提高了一倍,強度增加的太少了。如果你的演算法就是簡單的乘法的話,不用一個月幾分鍾就可以破解。建議採用DES,AES等成熟演算法。 問題2:這的這種花指令寫法無任何意義,一個好的C編譯器會直接把 printf("xxxxx");優化掉不產生任何代碼。花指令必須是匯編級別的。一個簡單的例子,修改你的程序如下,你在反匯編看看。 #define JUNK_CODE_JMP1(xxx) __asm jl $+12 __asm jmp $+6 __asm _emit xxx JUNK_CODE_JMP1(0x55); printf("xxxxx"); JUNK_CODE_JMP1(0xaa); printf("yyyyy"); JUNK_CODE_JMP1(0xcc); return 21; 問題3:這個一句兩句講不完,推薦你一本書,寫的很通俗,也很有趣。 書名:應用密碼學(協議演算法與C源程序) 【出版社】 機械工業出版社 【書號】 7111075889
㈢ 怎麼防止程序被反匯編
這個有點難,畢竟程序的本源就是那樣,不管你用什麼手段,只要破解者有耐心最後都有可能被攻克的,目前這類問題的解決方法都是設置相關許可權,加殼加密等,當然破解難度比較大的就是使用VM技術了,如果你們有足夠的時間和足夠的實力的話,可以自己開發一套指令系統用於你們的程序那麼會加重反編譯難度的~ 某種程度上說也是達到一種防止反編譯的做法~
㈣ 反匯編區段加密代碼
加區加密 都是小兒科的 給你一個 厲害的代碼 輸入表輸出表 完全破壞 ! 實戰輸入表完全破壞 隱藏代碼:(萬能代碼) 60 E8 01 00 00 00 00 58 80 38 00 0F 85 F5 00 00 00 FE 00 64 A1 30 00 00 00 8B 40 0C 8B 40 1C 8B 00 8B 40 08 8B D8 E8 0F 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 59 60 89 C3 89 CF 30 C0 AE 75 FD 4F 29 CF 87 F9 8B 43 3C 8B 74 03 78 8D 74 1E 18 AD 92 AD 50 AD 95 AD 95 01 D8 89 7C 24 18 89 4C 24 14 4A 74 27 8B 34 90 01 DE F3 A6 74 0A 8B 7C 24 18 8B 4C 24 14 EB EA D1 E2 01 D5 0F B7 44 1D 00 C1 E0 02 03 04 24 8B 04 03 01 D8 59 89 44 24 1C 89 5C 24 18 E8 12 00 00 00 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 59 83 C1 04 51 53 FF D0 89 44 24 14 E8 00 00 00 00 5D 81 E5 00 00 FF FF 33 C0 EB 06 81 ED 00 10 00 00 66 8B 45 00 66 3D 4D 5A 90 75 EF 8B 45 3C 8B 04 28 3D 50 45 00 00 75 E2 B8 48 61 11 00 36 8D 1C 28 8B 43 0C 85 C0 74 0A E8 0D 00 00 00 83 C3 14 EB EF 61 E9 82 8F F9 FF 90 90 53 8D 14 28 52 FF 54 24 20 8B D0 8B 5B 10 8D 1C 2B 8B 03 85 C0 74 23 3D 00 00 00 80 72 07 2D 00 00 00 80 EB 06 8D 04 28 83 C0 02 52 50 52 FF 54 24 30 89 03 83 C3 04 5A EB D7 5B C3
㈤ 對STM32F107編程時,使用什麼方法能防止被別人反匯編,用什麼方法能夠加密謝謝
1,如果板子上有外部存儲器,可以先編寫一個程序,利用演算法把id計算得到一些值存入外部存儲器,然後再燒寫真正的程序,真正的程序去校驗外部存儲器的數據是否合法即可
2,利用板子上按鍵組合,或是上電按住某些鍵,程序在這個時候利用演算法把id計算得到一些值存入程序區(stm8為EE區),程序運行時去驗證程序區數據是否正確
3,軒微編程器有軟體加密的功能,編程器會讀晶元id,根據演算法直接改寫緩沖區,達到軟體加密的作用
4,讀出的id通過一定演算法,例如異或加上一個數,得到的數據存入flash(只運行一次,運行後標志位也存入flash),下次讀到這個標志位,就不運行這個程序。
四、做軟體加密時注意
1,不要在程序中直接出現id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870
2, 利用校驗和或是crc對程序區進行校驗,防止改程序
㈥ 用反匯編工具破解軟體時最重要的步驟和破解方法
跟到程序內容的時候
最重要的必然是"_fmlyht"所說的調用(CALL)和跳轉了
調用看的是所執行的功能函數
跳轉則是看的程序走向於條件判斷
但首要問題往往是如何看到程序內容
所以第一個要務必然是脫殼
壓縮殼好辦,大都能用ESP定律脫掉
即便不行,單步跟進也都OK~~
而且壓縮殼大多都有專門的脫殼機
加密殼就費勁了,必須要根據代碼研究演算法,再通過演算法還原
而且不少加密殼中帶有Ati-Debug功能來反調試。
需要做一些隱藏工作(OD的很多插件都可以實現隱藏,效果不一)
脫殼之後也不是萬事大吉了
在程序主體代碼中也有可能夾雜一些花指令(JunkCode)
要知道如何去除花指令的干擾。
當然,程序中夾雜的不是花指令而是虛擬機保護……
就你提的問題所見你的水平可以直接放棄掉了……太難了……
說到頭,如果你只是拿一些簡單的CrackMe練手,那怎麼都好說
直接搜索字元串然後下斷跟進都OK~
但如果你要做真實的破解
那對抗各種各樣的保護手段是無法避免的……
等你能對大部分常見的保護手段應付自如的時候,
具體怎麼破解就不用別人教了~
㈦ 誰能將下列反匯編的代碼給用C語言寫出來,謝謝,高分
你這是IDA的偽代碼,看起來像一段加密程序,如果沒人能夠幫你逆向出來的話,你可以試著在C語言中將匯編語句內嵌。
__asm
{
......
}
㈧ 給程序脫殼什麼意思 反匯編什麼意思
脫殼就是指把程序解密了,許多程序都是有加密的 反匯編就是你只有exe文件,需要輔助軟體(比如Ollydbg、w32dsm以及編程環境vc6等)
㈨ 什麼是反匯編
嘿嘿 匯編:就是將匯編語言源程序翻譯成(機器指令表示的二進制文件)目標程序。
反匯編就是匯編的反過程,它是將可執行的目標程序翻譯成匯編語言源程序的過程。也就是解密。
由於現在的保密意識到加強,一般在把目標程序寫入晶元的同時,都採取了軟體加密和硬體加密技術,反匯編的難度越來越大。
呵呵 滿意 就選滿意回答哦
㈩ 現在反編譯工具比較猖狂,如何讓自己寫的程序加密,不被其反編譯
我覺得有一種方法可以,就是不太實用: 首先你先在程序的初始化(開始運行的前幾十行)寫個解碼函數來把程序的在解碼函數之後運行的程序從亂碼解碼成正常可執行代碼再載入程序解碼後的代碼,在程序結束時再修改解碼函數或用另一種方法加密程序中的非解碼函數部分!總之要反編譯工具很難了解你的程序的運行邏輯,反正只要讓該程序只能運行不能反編譯!讓用戶只能選擇要麼刪除要麼運行,一旦運行一次就別想反編譯了!還不懂的話就,找我 QQ:1211847476