1. 程式人生 > >逆向破解之160個CrackMe —— 013

逆向破解之160個CrackMe —— 013

CrackMe —— 013

160 CrackMe 是比較適合新手學習逆向破解的CrackMe的一個集合一共160個待逆向破解的程式

CrackMe:它們都是一些公開給別人嘗試破解的小程式,製作 crackme 的人可能是程式設計師,想測試一下自己的軟體保護技術,也可能是一位 cracker,想挑戰一下其它 cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程式給自己破。

CrackMe簡稱CM。 程式下載地址:點選我

來源 <-點選檢視

編號 作者 保護方式
013 badboy Name/Serial,Serial(VB5)

 

 

 

工具 

x32dbg

VB Decompiler Pro

peid

開始破解之旅

ON.1

首先使用x32dbg開啟程式搜尋字串,發現只有四個字串,沒有我們想要的,難道被加密了?

下一步我們用pedi開啟程式檢視是否加殼了,發現並沒有加任何殼

 

ON.2

我們使用VB Decompiler Pro開啟013號程式在左側欄內點選Code -> Form1 下拉,發現其中有多個Click函式

我們點選第一個Click(Combo1_Click)

仔細看一下我們找到了祕鑰生成的程式碼,紅色框內

var 88 = 當前天數*23+當前月數*2+當前年份*1900

var 1d0 = (var 88 + var 88) + 當前天數14*1905 +當前天數14*1905

有人會說為什麼乘以1900

因為VB裡面Year(3) => 1900,Year(2020) =>1905

下面是Python程式碼

import datetime
now = datetime.datetime.now()
var_88 = now.day * 22 + now.month * 1 + now.year * 1900
var_1d0 = var_88 * 2 + 13 * 1905 * 2

我們點選CrackMe 1.0在輸入框內輸入答案點選Try,bingo ~ 答案正確

接下來我們來看CrackMe 2.0

我們點選第二個Click(Combo2_Click)

將其轉換為Python程式碼為

var_94 = '0110617121214051216101106141404110614140411091211100810101608040610121608100416'
name = 'lonenysky'
var_90 = 0
var_a8 = 1
for i in range(3, len(name)):
    var_90 = var_90 + (ord(name[i]) * int(var_94[var_a8 * 3 - 1:var_a8 * 3 - 1 + 3]))
    var_a8 += 1
    if var_a8 + 1 >= 39:
        var_a8 = 0
var_178 = 0
var_a8 = 1
for i in range(3, len(name)):
    var_1cc = ord(name[i]) * ord(name[i - 1]) * int(var_94[var_a8 * 2 - 1:var_a8 * 2 - 1 + 2])
    var_178 = var_178 + var_1cc
    var_a8 += 1
    if var_a8 + 1 >= 39:
        var_a8 = 0
print(str(var_90) + '-' + str(var_178))

 輸入Name =>lonenysky Serial => 145533-911038 點選按鈕Try ,提示答案正確

&n