文档章节

crackme6算法分析记录

enimey
 enimey
发布于 2014/03/22 11:15
字数 423
阅读 152
收藏 1

记录一次非明文的crackme分析记录,和注册机的编写。

下载地址:http://pan.baidu.com/s/1ntNTCBv

软件界面如下:

image

软件是加壳了的,脱壳很简单就不写了。

直接od载入,下断点bp GetDlgItemTextA,f9运行,输入Name:eni,Serial:T1,点击check,直接贴注释:

image

在关键call,f7跟进:

image

image

image

image

s2 = T294-96

关键call,f7跟进:

image

用java写的注册机算法:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class main {
	//private static char[] table = new char[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','S','Y','Z'};
	private static String table = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	public static void main(String[] args) {
		String name = null;
		System.out.println("请输入NAME:长度不大于9,不小于3");
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		try {
			while ((name=br.readLine())!=null) {
				System.out.print(name);
				if(name.length() < 3 || name.length() > 9) {
					System.out.println("NAME长度错误");
				}
				else {
					int name_length = name.length();
					int[] nameint = new int[10];
					int name_sum = 0;
				
					for(int i = 0; i < name_length; ++i) {
						nameint[i] = (int)(name.charAt(i));
						name_sum += nameint[i]; 
						System.out.println(" " + nameint[i]);
						System.out.println("sum: " + name_sum);
					}
				
					int n = 0, zimu = 0;
					String s1 = "", s2 = "", s3 = "";
					int eax = 0, ebx = 0, ecx = 0, edx = 0, esi = 0, edi = 0;
					for(int i = 0; i < name_length; ++i) {
						n = i*4 -(i+1);
						if(n < 0)
							zimu = 0;
						else
							zimu = (int)(table.charAt(n));
						System.out.println("zimu" + zimu);
						edx = nameint[i] ^ zimu;
						esi = (name_sum * i - name_sum) ^ 0xffffffff;
						esi = edx + esi + 0x14d;
						ecx = nameint[i] * name_length * (i + 3);
						eax = esi + ecx;
						edx = (eax % 0xa) + 0x30;
						eax = (edx ^ 0xadac) * (i + 2);
						edx = eax % 0xa + 0x30;
						s1 = s1 + String.valueOf(edx - 48);
						System.out.println("s1: " + s1);
						//s1 = (((((nameint[i] ^ zimu + ((name_sum * i -name_sum) ^ 0xffffffff) + 0x14d + nameint[i] * name_length * (i + 3)) % 0xa + 0x30) ^ 0xadac) * (i + 2)) % 0xa) + 0x30;
						//s1 = ((((nameint[i] ^ zimu + (name_sum * i - name_sum) ^ 0xffffffff + 0x14d + nameint[i] * name_length * (i + 3)) % 0xa + 0x30) ^ 0xadac) * (i + 2)) % 0xa + 0x30;
					
					}
					eax = name_length * name_sum;
					edi = eax % 0x64 + 0x30;
					s2 = "T" + s1 + "-" + String.valueOf(edi);
					ebx = s2.length();
					for(int i = 1; i < ebx; i++) {
						edi = ((int)s2.charAt(i) ^ 0x20) % 0xa + 0x30;
						s3 = s3 + String.valueOf(edi -48);
					}
					s3 = "T" + s3;
					System.out.println("Serial: " + s3); //最终注册码
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

© 著作权归作者所有

共有 人打赏支持
enimey
粉丝 15
博文 18
码字总数 12299
作品 0
成都
Mahout安装与配置笔记

一、硬件环境 操作系统:Linux ubuntu-13.04-desktop-i386 jdk安装版本:jdk-7u51-linux-i586 Hadoop版本:Hadoop-1.1.1(一个Namenode,三个Datanode部署) 二、安装步骤 在Mahout安装之前读...

kartik
2014/06/01
0
0
MySQL的JOIN(二):JOIN原理

表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法。循环外层是驱动表,循坏内层是被驱动表。驱动表会驱动被驱动表进行连接操作。首先驱动表找到第一条记录...

文文1
04/01
0
0
冒泡排序(Bubble Sort)

1、定义 冒泡排序(Bubble Sort)是一种交换排序。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 2、基本思想 两两比较待排序记录的关键字,发现两个记录的次序相反时即进行...

野渡书生
2016/04/29
29
0
算法导论第二章小试牛刀

Author: bakari   Date: 2015.9.11 《算法导论》真是一本让人又爱又恨的书,爱自然是因为它精简凝练的算法呈现,读来让人欲罢不能;至于恨,是因为它在进行算法分析的时候所体现的数学思想...

chambai
2015/09/11
0
0
内排序及时间复杂度分析-插入排序&选择排序&交换排序&归并排序&分配和索引排序对比

基本概念 什么是排序? 排序 将序列中的记录按照排序码顺序排列起来 排序码域的值具有不减(或不增)的顺序 内排序 整个排序过程在内存中完成 给定一个序列 R = { r1, r2, ...,rn } 其排序码分...

tcfellow
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

macOs-挂载能读写的NTFS硬盘

转自:https://nicklinyi.gitee.io/blog/2018/04/macOS-ntfs.html Mac本身是支持NTFS写入的,只是NTFS是微软开发,由于版权和技术细节原因,苹果不愿公开说自己支持NTFS写入,也是有自己以后...

北风刮的不认真了
15分钟前
1
0
Namespace 命名空间

命名空间可以定义为一种封装方式。 为了解决开发中库和程序中可重用类和方法问题: 1.解决 PHP内部方法类/方法/常量 或者第三方 类/方法/常量之间的命名冲突 2.能够简化为了防止命名冲突而给...

忙碌的小蜜蜂
18分钟前
0
0
CDH的坑之Deploy Client Configuration Failed

Deploy Client Configuration Failed 1.问题描述 当使用CDH增添spark服务的时候,出现了以下错误: Faile to deploy client configuration to the cluster. 具体如下图: 2.思路 网上查了...

星汉
19分钟前
1
0
java guava 集合的操作:交集、差集、并集

Guava:google的工程师利用传说中的“20%时间”开发的集合库,它是对jdk提供的扩展,提供了很多实用的类来简化代码。 开源地址:https://github.com/google/guava jar包下载:http://maven....

帅的不像男的
20分钟前
1
0
从八个层面比较分析 Java 8, RxJava, Reactor

响应式编程在单机环境下是否鸡肋? 结论是:没有结论,我觉得只能抱着怀疑的眼光审视这个问题了。另外还聊到了 RSocket 这个最近在 SpringOne 大会上比较火爆的响应式”新“网络协议,githu...

小刀爱编程
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部