• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

吾爱破解:CreakeMe-02

软件破解 云涯 5年前 (2019-10-20) 1887次浏览

0x 01 环境准备

吾爱破解虚拟机、OD、PEID、汇编金手指

0x 02 程序运行

程序运行方式

首先打开程序,查看程序各个功能如下,如下:

images

该窗口输入name和key,进行校验,错误会弹出窗口提示

images

0x 03程序分析

找到算法入口点:

打开程序,中文搜索引擎,智能搜索出相关字符串

images

栈回溯方法

OD加载程序,直接运行

F12停止程序,查看K(调用堆栈),并不是c或c++编写,经过排查可以发现msvbvm50.rtcMsgBox这个函数可能是此程序窗口调用。

images

右键show call(显示调用)可以定位到程序空间,向上翻动可以看到关键词。

images

那么基本就可以定位到关键处,经过查看找到爆破点以及此段入口点:

images

images

在算法入口点处单步进行分析

到这里就可以看到输入的字符串,下一个vbaLenBstr是VB编程中获得字符串长度的函数,最后将结果存在eax中,

images

images

到这里可以看到rtcAnsiValueBster函数,这是获取输入字符串的第一个字母的ascii码

images

images

将加密后字符串调用vbastrcat函数与AKA-合并起来

images

然后调用vbastrcmp比对函数,比对,密码区输入与计算后的值

images

总的算法就是

(len(输入)*0x17CFB)+ 第一个字符的ascii码值(十六机制)。

 

注册机编写(python3)

# -*- coding: cp936 -*-

import binascii

def creake():

name = input(“输入用户名:”)

data = 0x17CFB

FirStr = name[0:1]

name_len = len(name)

FirStrAnst = int(binascii.b2a_hex(FirStr.encode(“utf-8”)),16)

Result = (name_len * data)+FirStrAnst  #(len(输入)*0x17CFB)+ 第一个字符的ascii码值(十六机制)

    ResultStr = “AKA-” + str(Result)

print (“破 解 码 为:”+ResultStr)

if __name__ == ‘__main__’:

creake()

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:吾爱破解:CreakeMe-02
喜欢 (0)