CM005-逆向分析过程(上篇)
前言
005,都说比较变态,很多人给放过去了,但是我还是决定上了它,既然变态就分两篇,上篇先实际说流程,到底应该怎么上它,下篇会告诉逆向分析的过程和方法
准备
【环境和工具】
win7/xp虚拟机环境
CrackMe005(ajj2.zip)
ollydbg
Dededark
peid
UPXEasyGUI.exe
【学习层次】
这个CM作者声明了,“爆”他是不认可的
解密流程,写key
积累Delphi程序逆向特点经验
实战图文
一.最终效果动图展示
整个流程
注意:建议使用我已经修改过的原版,修改点只有一个字符X盘符改成了C盘符,否则你需要增加X分区或者改盘符,搁不住,所以我修改了程序,当然你也可以自己脱壳后,自己搜索字符串,自己再改盘符字符串
1.复制目录下ok.txt,到C:\ajj.126.c0m\j\o\j\o\ok.txt,这里我给原版的X盘改成C盘了,不然就改分区。
2.这时就应该可以显示出Edit2文本框,但是是禁用状态。
3.右键点击5次注册按钮(注意是右键)。
4.左键双击图框区空白处(不能点着图),Edit2文本框禁用解除。
5.用户名输入ajj
6.Edit2文本框内输入1_345,78后左键双击Edit2输入框中任何位置。
7.在图片是“性相近”的时候,鼠标从软件框右下脚移入软件框内。
8.在图片是“性本善”的时候,鼠标从软件框左下角移入软件框内。
9.这时候应该label3显示出数字,是0,1,2,3这四个当中的其中一个。
10.将数字输入我写的注册机,点击生成最终点击方案。
11.依照方案点击相应图片,注册成功
三、key源码
源码中,我求的是点击次数总和最小的方法,因为其实有很多组合,只求效率最高的方法,源码写的比较臃肿,为的是新手好读懂
1 void CCM002Dlg::OnOK() 2 { 3 // TODO: Add extra validation here 4 5 //CDialog::OnOK(); 6 7 char szKey[1024]={0}; 8 int n = 0; 9 GetDlgItemText(IDC_EDIT1,szKey,1024); 10 if(!strlen(szKey)) 11 { 12 13 MessageBox("请按照【前期步骤】获取正确数值后再生成方案!","友情提示"); 14 return; 15 } 16 n = GetDlgItemInt(IDC_EDIT1); 17 18 19 switch(n){ 20 case 1 : 21 n=0x3D; 22 break; 23 case 2 : 24 n=0x34; 25 break; 26 case 3 : 27 n=0xDF; 28 break; 29 30 default : // 可选的 31 n=0x41; 32 } 33 34 35 struct image 36 { 37 char szname[7]; 38 int nNumber ; 39 int nLef; 40 int nRight; 41 }; 42 image aImage[4]={0}; 43 44 sprintf(aImage[0].szname,"人之初"); 45 aImage[0].nNumber = 1; 46 aImage[0].nLef = 0x2; 47 aImage[0].nRight = 0x11; 48 49 sprintf(aImage[1].szname,"性本善"); 50 aImage[1].nNumber = 2; 51 aImage[1].nLef = 0x3; 52 aImage[1].nRight = 0x13; 53 54 sprintf(aImage[2].szname,"性相近"); 55 aImage[2].nNumber = 3; 56 aImage[2].nLef = 0x5; 57 aImage[2].nRight = 0x17; 58 59 sprintf(aImage[3].szname,"习相远"); 60 aImage[3].nNumber = 4; 61 aImage[3].nLef = 0x7; 62 aImage[3].nRight = 0x1B; 63 /************************************************************************/ 64 /* 设计原则,选择出点击次数最少的方案 65 /* iR作为大数数组下标,iL作为小数数组下标,j大数商,k小数商,求i+j最小值 66 /************************************************************************/ 67 int nRes = 112; 68 int nIL = 0; 69 int nIR = 0; 70 int nJ = 0; 71 int nK =0 ; 72 for (int iL=0;iL<4;iL++) 73 { 74 for (int iR=0;iR < 4;iR++) 75 { 76 77 for (int j=1;j<=14;j++) 78 { 79 for (int k =0;k<=112;k++) 80 { 81 82 if ((aImage[iR].nRight*j + aImage[iL].nLef*k == n) && (nRes> j+k)) 83 { 84 nIL = iL; 85 nIR = iR; 86 nJ = j; 87 nK = k; 88 nRes = j+k ; 89 } 90 91 } 92 } 93 } 94 95 } 96 97 sprintf(szKey,"在“%s”图片时左键点击图片%d次\r\n\r\n在“%s”图片时右键点击图片%d次\r\n\r\n即可注册成功!",aImage[nIL].szname,nK,aImage[nIR].szname,nJ); 98 SetDlgItemText(IDC_EDIT2,szKey); 99 100 101 }
转载于:https://www.cnblogs.com/nxyz/p/10302123.html
CM005-逆向分析过程(上篇)相关推荐
- 拿走不谢!固件逆向分析过程中的工具和技巧(上)
将固件逆向分析,然后再将逆向分析后的内容转换为有用的东西,这个过程对于所有人来说都是一个耗时又耗力的过程.有时即使文件出现在你面前,你也无能为力,比如你可能会面临专有(几乎没有文档记录)的文件格式.奇 ...
- 拿走不谢!固件逆向分析过程中的工具和技巧(下)
上文,我们讨论了固件逆向分析过程中的部分工具和策略,这篇我们接着介绍如何分析被加密的固件以及分析策略. hex editor的使用 hex editor是一款使用简单的十六进制编辑工具,能快速对数字进 ...
- Python采集群人员数据,记录JavaScript逆向分析过程
目录 前言 准备工作 分析(x0) 分析(x1) 分析(x2) 分析(x3) 代码 结语 前言 本人所有文章内容.源码,除官方企业外,禁止个人转载,谢谢配合. ....太多培训机构拿我的文章源码去讲 ...
- app从java到so加密逆向分析过程(一)
一.抓包分析 二.用jadx-gui打开 打开某观察app 搜索关键字sign 加密参数在so层 wtf文件中 结合抓包数据,以及分析sign的前后代码发现:参数str 为空,参数token为空,参数 ...
- Sat-Hacking(4):Starlink路由器逆向分析-上篇
在本篇文章中,我们将探讨 SpaceX Starlink 路由器的逆向分析过程.Starlink 是 SpaceX 推出的一项革命性的卫星互联网服务,旨在为全球偏远地区提供高速.低延迟的互联网连接.为 ...
- [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断
前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...
- 关于学习软件逆向分析意义的阐述
1对本课程教学地位的理解和想法(学习软件逆向分析的意义) 1.1逆向工程的起源 世界上最早的逆向工程其实来源于战争时期.在军事战争时期,各国之间常常存在水上作战,而船舶就成了运输和作战的重要工具.如下 ...
- 基于Inspeckage的安卓APP抓包逆向分析——以步道乐跑APP为例
引言:本人最近稍微弄懂了inspeckage的用法,特在此以步道乐跑APP为例,较详细记录地记录APP抓包与简单的逆向分析过程,用于备忘与共同学习!另外,温馨提醒,本文图片较多,建议连接WiFi阅读! ...
- 逆向分析入门实战(三)
本文由作者首发于合天智汇:http://www.heetian.com/info/840 之前两篇文章,针对恶意代码为了确保自身只有一个实例在运行进行了正向开发和逆向分析.逆向入门分析实战(一).逆向 ...
- 从微信扔骰子看iOS应用安全与逆向分析
前言 在之前<免越狱调试与分析黑盒iOS应用>以及前几篇文章中已经介绍了如何开始分析iOS应用,不过都是基于非越狱的机器,其本意是为了能够在自己的主力设备中进行简单的分析和调试.但是执着于 ...
最新文章
- 【读薄Effective Java】创建和销毁对象
- 【NLP】简单学习一下NLP中的transformer的pytorch代码
- Python精通-Python集合操作详解
- Android修改高度,android – 如何在运行时更改软键盘的高度?
- phpstudy2018启动关闭_phpstudy2018搭建Apache https 开启php_openssl
- 前端引入阿里图标库的最便捷方式
- php json转数组示例,php json转数组的例子
- Mugeda:代码分享
- 黑苹果驱动 hackintosh
- 保研面试-中英文问题及回答总结
- win10应用商店无法打开重新 加载
- CF755F PolandBall and Gifts
- Win11远程协助灰色无法勾选?Win11远程协助不能选择的解决方法
- 带你学开源项目:RxLifecycle-当Activity被destory时自动暂停网络请求
- 真香!有了这个搜索大法,GitHub玩到飞起来!
- 在云服务器搭建vulhub靶场
- 指针指向的地址的说明
- 采样频率和带宽的关系_发送端测试的主力设备 - 实时示波器朝向高带宽高位数发展...
- SQL Server - 提高服务器安全性13招
- 竞价托管百度搜狗360神马搜索竞价账户托管外包 代运营
热门文章
- Centos下使用Docker部署asp.net core项目
- 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
- 第二篇:白话tornado源码之待请求阶段
- python 带随机指针的链表深度复制_LeetCode:复制带随机指针的链表
- 腾讯offer是什么样子_记一次腾讯社招前端面试(已拿到offer入职)
- Win64 驱动内核编程-2.基本框架(安装.通讯.HelloWorld)
- UVA11384正整数序列(把123..变成0的最小步数)
- 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )
- 【C 语言】字符串模型 ( strstr-do…while 模型 )
- 【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )