史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > Hacker/Cracker 及加解密技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 03:21 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 ★號求學篇,問得不在行不要怪我!

Subject:★號求學篇
Crack by : NewHand[BCG](QQ: 13565988)
Crackme name: G_encryp.exe(作者Call算法名稱為"Gargamel")
Size: 157KB
Crackme Author: Bengi DownLoad: www.Crackmes.de或聯繫作者。
Tool: Ollydbg
Difficult: easy
Reason: 近來對某大陸開發軟體的反跟蹤保護產生興趣,誰知作者做得很有心思(無Nag勝有Nag),功力有限,只能跟到作者加了密
的一串反跟蹤列舉所有偵錯器的程式碼,暗樁不少,CRC更不要說找,於是暫時放棄了,★有興趣和
有能力的朋友歡迎connect me一同助我研究(為維護大陸開發作者權益,軟體是反向工程的,名稱私下聯繫)
★ 於是到網上找了個Crackme玩玩,調戲心情。。。。

Crackme沒有加殼,用C++編譯的,作者說它的Crackme可以encryp 20k Text Files,內有一份長度902
字元叫"Encrypte.txt"的加密文件,要求你對它進行解密,並有些問題a. b. c.想你思考的,若我有分析錯誤,歡迎指正^_^ ^_^
你若用這個Crackme寫加密文件可用下面的程式碼位址攔截來到:
004011B0 /> 55 PUSH EBP
004011B1 |. 8BEC MOV EBP,ESP
004011B3 |. 81EC A0000000 SUB ESP,0A0
004011B9 |. 53 PUSH EBX
004011BA |. 56 PUSH ESI
004011BB |. 57 PUSH EDI
004011BC |. 8DBD 60FFFFFF LEA EDI,DWORD PTR SS:[EBP-A0]
004011C2 |. B9 28000000 MOV ECX,28
004011C7 |. B8 CCCCCCCC MOV EAX,CCCCCCCC
004011CC |. F3:AB REP STOS DWORD PTR ES:[EDI]
004011CE |. C745 F8 000000>MOV DWORD PTR SS:[EBP-8],0
004011D5 |. B9 10000000 MOV ECX,10 ; 下面一串的ASCII碼可能是Key,俗稱的「鑰匙」,這裡我叫它作「參算碼」
004011DA |. BE 1C004200 MOV ESI,G_ENCRYP.0042001C ; ASCII "8C41D6383B11686556BDC14DC4D42712E94820FDC0E591822CBE3890D0A3BDE9"
004011DF |. 8D7D B4 LEA EDI,DWORD PTR SS:[EBP-4C]
004011E2 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
004011E4 |. A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
省略部分程式碼。。。
00401290 |. 85C0 TEST EAX,EAX ; 明文長度
00401292 |. 0F84 83000000 JE G_ENCRYP.0040131B
00401298 |. C745 AC 000000>MOV DWORD PTR SS:[EBP-54],0
0040129F |. EB 09 JMP SHORT G_ENCRYP.004012AA
004012A1 |> 8B4D AC /MOV ECX,DWORD PTR SS:[EBP-54]
004012A4 |. 83C1 01 |ADD ECX,1
004012A7 |. 894D AC |MOV DWORD PTR SS:[EBP-54],ECX
004012AA |> 8B55 AC MOV EDX,DWORD PTR SS:[EBP-54]
004012AD |. 3B55 B0 |CMP EDX,DWORD PTR SS:[EBP-50] ; 比較是否少於明文長度,真繼續轉換明文
004012B0 |. 7D 3D |JGE SHORT G_ENCRYP.004012EF ; 跳向寫文件
004012B2 |. 8B4D B0 |MOV ECX,DWORD PTR SS:[EBP-50] ; 明文長度裝入ecx
004012B5 |. 2B4D AC |SUB ECX,DWORD PTR SS:[EBP-54] ; ecx = 明文長度 - 正在轉換的(自然數)順序號碼
004012B8 |. 8B45 B0 |MOV EAX,DWORD PTR SS:[EBP-50] ; 明文長度裝入eax
004012BB |. 2B45 AC |SUB EAX,DWORD PTR SS:[EBP-54] ; eax = 明文長度 - 正在轉換的(自然數)順序號碼
004012BE |. 99 |CDQ ; edx清零
004012BF |. 81E2 FF010000 |AND EDX,1FF
004012C5 |. 03C2 |ADD EAX,EDX
004012C7 |. C1F8 09 |SAR EAX,9 ; 明文長度在1023字元以上,eax算術右移就不為零
004012CA |. 0FBE5445 B4 |MOVSX EDX,BYTE PTR SS:[EBP+EAX*2-4C] ; 置1位參算碼到edx
004012CF |. 33CA |XOR ECX,EDX ; 未轉換個數與1位參算碼異或
004012D1 |. 8BC1 |MOV EAX,ECX ; 結果作被除數
004012D3 |. 99 |CDQ
004012D4 |. B9 1A000000 |MOV ECX,1A ; 置除數 1A
004012D9 |. F7F9 |IDIV ECX
004012DB |. 8B45 A4 |MOV EAX,DWORD PTR SS:[EBP-5C] ; 明文開始位置有效位址裝入eax
004012DE |. 0345 AC |ADD EAX,DWORD PTR SS:[EBP-54] ; 修正游標位置
004012E1 |. 8A08 |MOV CL,BYTE PTR DS:[EAX] ; 傳送明文順序的每1字元
004012E3 02CA ADD CL,DL ; CL = 餘數+明文每字元
004012E5 |. 8B55 A4 |MOV EDX,DWORD PTR SS:[EBP-5C] ; 明文開始位置有效位址裝入eax
004012E8 |. 0355 AC |ADD EDX,DWORD PTR SS:[EBP-54] ; 修正游標位置
004012EB |. 880A |MOV BYTE PTR DS:[EDX],CL ; CL結果放回明文原處
004012ED |.^EB B2 \JMP SHORT G_ENCRYP.004012A1
004012EF |> 8BF4 MOV ESI,ESP
004012F1 |. 6A 00 PUSH 0 ; /pOverlapped = NULL
004012F3 |. 8D45 A0 LEA EAX,DWORD PTR SS:[EBP-60] ; |
004012F6 |. 50 PUSH EAX ; |pBytesWritten
004012F7 |. 8B4D A8 MOV ECX,DWORD PTR SS:[EBP-58] ; |
004012FA |. 51 PUSH ECX ; |nBytesToWrite
004012FB |. 8B55 A4 MOV EDX,DWORD PTR SS:[EBP-5C] ; |
004012FE |. 52 PUSH EDX ; |Buffer
004012FF |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; |
00401302 |. 50 PUSH EAX ; |hFile
00401303 |. FF15 C4524200 CALL DWORD PTR DS:[<&KERNEL32.WriteFile>>; \WriteFile


註:我用C語言寫的解碼器,在Turbo C 2.0下測試有特殊符號(貼上)不能通過,一怒之下毀了這個解碼器,後來想了一想原則上是沒問題的,
只是msdos視窗始終不是真正windows--有行長限制和控制符限制,自己現在只是懂得小小東西(玩msdos視窗標準設備輸出輸入),
★有誰可以教我做個脫離dos的讀寫文件的傢伙(技巧、語言不要太難學啊),灌些(假設大小不能預計)緩衝陣列啟始化大小的技巧★;
忽然靈機一閃,004012E8處的程式碼處的ADD不如改成SUB,程序不就可以為我輸出譯文,^_^ ^_^密文說:「...#·%¥@」
被毀解碼器源碼:
#include <stdio.h>
#include <string.h>

main()
{char choice[]={"8C41D6383B11686556BDC14DC4D42712E94820FDC0E591822CBE3890D0A3BDE9"};
char code[16535];
unsigned int i,n,m,k,code_len,still_len;
printf("\n*******************G_encryp解碼器**************************");
printf("\n\n請輸入已加密的內容:");
gets(code);
code_len=strlen(code);
n=0;m=0;
if(code_len<16535)
{for(i=0;i<code_len;i++)
{still_len=code_len-n;
m=(still_len>>9)*2;
k=(still_len^choice[m])%0x1a;
code[i]=code[i]-k;
n+=1;
}
printf("\n\n你的原始資料是:");
puts(code);
}
else
printf("\n你輸入的資料太長或I/O錯誤!");
}
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 03:56 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2020, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1