No 1 入門級CrackMe分析

2021-05-23 12:14:36 字數 3781 閱讀 7760

入門級crackme分析

1、ctrl + n 檢視程式引入那些函式

2

、下函式斷點

bpx getdlgitemtexta

然後f9

執行,中斷下來。

3

、找到演算法入口,分析演算法如下

crackme

滿足條件:

1、註冊名長度在

3-9之間

2、註冊碼第乙個字元被

0x11cf

整除餘數為

0x17

演算法如下

1、生成中間碼(很囉嗦)

2、中間碼還原成真碼

3、真碼與輸入碼

4個字元一組比較

4

、序號產生器

int main(int argc, char* argv)

for(i=0;i

mid[len+1]='/0';

strcat(mid,"-");

temp=(len*sum)%0x64+0x30;

ultoa(temp,lastnum,10);

strcat(mid,lastnum); //

還原成真碼

int m_len=strlen(mid);

for(i=1;i

printf("

註冊碼serial:%s/n",mid);

return 0; }

5

、學習彙編知識

leaedi, dword ptr [ebp-11f]

leaesi, dword ptr [402443]

movecx, 1b

repmovs byte ptr es:[edi], byte ptr [esi]

rep

指令

a:執行指令

a

ecx次數

一共開闢

ecx*4

個位元組空間

movsx opd,opsops

內容

----

à

opd

,左邊空缺用

ops符號填充

movzx opd,opsops

內容

----

à

opd

,左邊空缺以

0填充

moveax, 11cf

movzxecx, byte ptr [ebp-31f]

cdqidivecx

cdq:eax

符號擴充套件到

edx ---------

à

edx:eax

雙字擴充套件

4

idiv ops :

帶符號除法

被除數

edx:eax

除數

ops

edx:eax /ops

--------

à

eax

edx:eax/ops

餘數

-----

à

edx

mov ecx,0a

cdqidiv ecx

add edx,30

數字00x30edx%0a+0x30

轉換為數字的

ascii

碼大寫字母

a0x41edx%0a+0x41

轉換為大寫字母的

ascii

碼小寫字母

a0x61edx%0a+0x61

轉換為小寫字母的

ascii

mov di ,offset bufdat

mov cx ,length bufdat

mov al ,00

cld

:高位址取

sld:低位址取

rep stosbstosb

一次複製乙個位元組

al--àdi

mov ecx, 30h

mov eax,0cccccccch

rep stos dword ptr es:[edi]

stos

是串儲存指令,它的功能是將

eax中的資料放入

edi所指的位址中,同時,

edi會增加

4(位元組數)。

rep時指令重複執行

ecx中填寫的次數。

6

、函式呼叫規則:呼叫者和被呼叫者函式間傳遞引數及返回引數的方法

windows

下函式呼叫方式由

pascal

方式pascal

呼叫規則:(1

)引數從左到右入棧;(2

)被呼叫引數在返回前自行清理堆疊;(3

)不支援可變引數的函式呼叫。c方式

(_cdecl)

_cdecl

呼叫規則:(1

)引數從右到左進入堆疊;(2

)在函式返回後,呼叫者要負責清除堆疊,所以這個呼叫常會生成較大的可執行檔案。

winapi

方式(_stdcall)

_stdcall

又稱為winapi

,其呼叫規則:(1

)引數從右到左入棧;(2

)被呼叫的函式在返回前自行清理堆疊,所以生成的**比

cdecl

小。核心快速呼叫方式

(_fastcall)

c++中this call

方式(_thiscall)

注意:在

windows

中,不管哪種呼叫方式都是返回值放在

eax中,然後返回。外部從

eax中得到返回值。

Linux入門級教程 1 簡介

linux的發行版說簡單點就是將linux核心與應用軟體做乙個打包。目前市面上較知名的發行版有 ubuntu redhat centos debian fedora suse opensuse arch linux solusos 等。目前國內linux更多的是應用於伺服器上,而桌面作業系統更多使用...

入門級演算法

今天我想記錄的是一些關於入門級別的演算法。將乙個字串s對映為乙個整數,使得該整數可以唯一的代表字串s。先假設字串均由大寫字母a z構成,不妨設a z為0 25,即將26個大寫字母對應到了二十六進製制中。按照將二十六進製制轉換為十進位制的思路,即可實現將字串對映為整數的需求。題目 給出n個字串 恰好由...

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...