Crackme 23
这题很好,一环扣一环。
首先PEID查看
第一次见MASM32 汇编直接编写。前几道题有高级语言编写,有现成的反编译工具。但这道题没有,只能手工OD调试
用OD加载搜索字符串
发现破解成功的条件是ax == 0x10,
于是找给ax 赋值的代码,ax的值与[403166]有关
于是利用内存断点,找到所有写入[403166]有关的代码
设置内存断点,发现了猫腻
分析得[403188] + 0x9112478 必须为0
将内存断点设在[403188],找到了下面的算法
00401361 . 8D3D 8C314000 LEA EDI,DWORD PTR DS:[40318C] ; name
00401367 . 0FBE05 683140>MOVSX EAX,BYTE PTR DS:[403168] ; ax = i
0040136E . 03F8 ADD EDI,EAX
00401370 . FE05 68314000 INC BYTE PTR DS:[403168] ; i ++
00401376 . A1 88314000 MOV EAX,DWORD PTR DS:[403188] ; 密码的16进制
0040137B . 8B25 A0314000 MOV ESP,DWORD PTR DS:[4031A0]
00401381 . 40 INC EAX ; 密码 ++
00401382 . FF05 88314000 INC DWORD PTR DS:[403188]
00401388 . 3307 XOR EAX,DWORD PTR DS:[EDI] ; 密码 ^ name[i] 这里有个坑4字节异或
0040138A . A3 88314000 MOV DWORD PTR DS:[403188],EAX ; 密码 = 上式
0040138F . 803D 68314000>CMP BYTE PTR DS:[403168],10 ; if i != 10 loop
算法有了注意这里有个坑,00401388 . 3307 XOR EAX,DWORD PTR DS:[EDI]这里是与四字节异或,小端序要转成大端序
最后写出exploit
name = raw_input("name:")
s = 'A'+name+'\x00'*(0x14-len(name)) #A 用来填充
s = bytes(s).decode('ascii')
print s
sub = 0xffffffff - 0x9112478 + 1
for i in range (0x10,0,-1):string = '0x'+'0'*(2-len(hex(ord(s[i+3]))[2:]))+hex(ord(s[i+3]))[2:]+ '0'*(2-len(hex(ord(s[i+2]))[2:]))+hex(ord(s[i+2]))[2:] + '0'*(2-len(hex(ord(s[i+1]))[2:]))+hex(ord(s[i+1]))[2:]+ '0'*(2-len(hex(ord(s[i]))[2:]))+hex(ord(s[i]))[2:]sub ^= int(string,16)sub -= 1
print sub
Crackme 23相关推荐
- crackme算法分析---CRC32算法的妙用
loveasm的crackme算法分析-----CRC32算法的妙用 [作者]:onlyu[FCG][DFCG] [软件介绍]:loveasm[YCG][DFCG]兄弟的crackme,主要锻炼算法分 ...
- [反汇编练习] 160个CrackMe之023
[反汇编练习] 160个CrackMe之023. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- [反汇编练习] 160个CrackMe之021
[反汇编练习] 160个CrackMe之021. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- 逆向分析CrackMe系列——CrackMe004之注册码算法分析
逆向分析CrackMe系列--CrackMe004注册码算法分析 本文内容承接前面的工作,记录了自己每一步的分析过程和思路,由于内容较长,故单独写一篇. (本系列的CrackMe资源均来自我爱破解网) ...
- 170604 逆向-CrackMe之013
1625-5 王子昂 总结<2017年6月3日> [连续第245天总结] A.CrackMe(13) B.中间几个的难度是三星和???--吓到我了,完成第一页以后再去挑战这几个吧 第13个 ...
- crackme例子2
样本 jadx clacSnFuntion jni函数,ida分析 关键位置函数一片红色,可能有动态加解密 如果不分析具体解密算法,可内存dump解密后整个so frida如下: function d ...
- 逆向一个IOS CrackMe
<0x01> 前言 本文涉及的CrackMe是看雪IOS安全小组招募的开门题目.题目提供了一个IOS应用,要求给出该应用的注册机.作为开门题目,其控制逻辑比较简单,为了实现注册机,主要的工 ...
- 五星crackme看着汇编写C已吐血
其实我一开始是冲着这个去了,一个神秘的CORE组织不知道为何物,好像很厉害的样子促就我想把他弄出来.软件是加壳的,这个没什么好讲的,开始就是pushad,于是在栈上下访问断点立马就能拿到magic j ...
- CrackMe练习之ACG TRIAL Crackme 1.0
这里有题目和作者讲解: http://bbs.pediy.com/showthread.php?t=32849 这是一个形式和算法都很简单的破解练习题.先运行之,记住失败弹出的提示消息,然后OD打开, ...
- CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题
centos安装docker.ce遇到报错,提示如下 # yum install -y docker-ce Last metadata expiration check: 0:01:49 ago on ...
最新文章
- 九个Console命令,让js调试更简单
- 【面试相关】python实现快速幂取余算法详解
- 收藏:深度剖析产品经理的「核心竞争力」
- Android开发小技巧之商品属性筛选与商品筛选
- Scikit-learn 秘籍 第三章 使用距离向量构建模型
- android115 自定义控件
- pip install ipython出错_Python -- 关于pip安装Ipython
- 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
- 企业AD域管理利弊_如何避免企业AD域管理中的各种弊端?
- MySQL环境变量的配置(详细教程)
- 中国占三分之一!CBinsights世界最新独角兽排名出炉
- [译]写给初学者的Tensorflow介绍 - 2
- UT2016学习笔记
- 数据安全传输平台项目笔记
- k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
- 给大家推荐一个软件:视频广告过滤大师
- 基于SVM支持向量机的车牌分割识别算法matlab仿真——详细版
- python运用三角学通过方位角仰角与距离计算三维坐标
- 【转】最大后验概率(MAP)- maximum a posteriori
- 贝叶斯网专题4:概率推理中的变量消元方法
热门文章
- 阿里巴巴矢量图标的应用
- Vivado2018.3手把手详细下载
- iview 循环 卡片 更好图标 背景色 标题
- (10)ERStudio
- Drools教程(基础篇)——创建项目
- CMDN Club每周精选(第7期)
- 解构OPPO IoT:“开放生态”+“用户思维”,“智美生活”雏形已显
- [迁移] Luac的使用
- ElasticSearch + kibana 基础查询文档大全
- Houdini图文笔记:Houdini Indie正版声明