吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5382|回复: 29
收起左侧

[分享] 书上面一道题的解法

[复制链接]
疯如初 发表于 2020-4-16 04:54
本帖最后由 疯如初 于 2020-4-16 10:15 编辑

前言

我是一个学逆向的小白,大概可能学了几天时间,技术不好,希望大佬能帮忙指点下我的过程,谢谢!
有些跟着书上做的,因为刚学呢(最后伪代码是独立完成的)
这篇文章其实不是转载的,但由于感觉技术含量不高,而且初学文且大多数跟着书上做的,所以就放分享区了

工具

Ollydbg

被调试文件

TraceMe.exe(无壳)

难度

简单

过程

QQ截图20200412161619.png
打开后,发现是需要通过序列号来授权的,取出文本框内的文本需要通过Win32API的GetDlgItemText或GetWindowText
这个是用GetDlgItemText的
ctrl+g然后找到GetDlgItemText的入口位置下int3断点
QQ截图20200412161951.png
点击check后,程序被中断在74944390,F8走出win32api的子程序
QQ截图20200412162208.png
F8一直向下走,在004011f5被条件转移到了0040122e
QQ截图20200412162451.png
发现不太对劲,好像已经被发现我序列号输错了
判断如果不条件转移就破解成功了,所以现在就可以直接把004011f5改成nop就可以不管怎么输入都正确了

序列号算法分析

因此定位序列号检测算法在004011f5条件转移前面,在GetDlgItemText后面
QQ截图20200412162735.png
经过分析后(分析见od注释)发现,004011e5处的call 00401340是唯一一个可能作为验证算法的地方,故判断00401340为序列号验证子程序的入口
004011e5处下断点,ctrl+f2重新开始,运行到004011e5处f7跟进子程序
QQ截图20200412163236.png
QQ截图20200412163243.png
看着汇编指令慢慢分析后,把注释也标在旁边,最后自己翻译成自创的伪代码(怎么舒服怎么写)
QQ截图20200412163525.png
最后只要保证序列号和被这个算法一通算下来的[ebp]一样就行

note

读这段汇编的时候最后稍微卡了一下,因为neg这个指令没仔细了解,也没学过,看名字也就是个正转成负数这类的东西了
但我看到后面sbb的时候意识到问题不对劲,因为如果标志寄存器中的cf位为1的话会导致一个sbb要额外减去1
查了一通发现neg在弄不为0的操作数的时候cf会变成1
所以调用lstrcmpA这个Win32API的时候,目的根本就不是比谁大,而是看是否相同
因为sbb eax,eax不管怎样来说eax-eax都是为0的,但由于cf的存在,它就有可能变成-1或0
而neg操作的对象正是lstrcmpA的返回值(比较对象相同返回0,大于返回正数,小于返回负数)
然后执行完sbb eax,eax后,再来一手inc eax就把结果变成了0和1
所以只要[eax]和[ebp]相同的话,这个序列号检查子程序会返回1(意味着输入正确),不同就0(意味着输入错误)

总结

这个主要还是找下感觉看着书上做的,但发现这个不算难的,做着做着还是发现可以做出来的,分析也不算费劲,前面也说到发现关键子程序做到了唯一定位
后面的序列号检查算法分析(翻译成自己的伪代码)是自己独立做的,后来对比下这个程序的源码发现差不多

参考

段钢-加密与解密
小哈龙-影响标志位的汇编指令-https://blog.csdn.net/qq_22642239/article/details/51442739

TraceMe.rar

9.74 KB, 下载次数: 7, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 8吾爱币 +12 热心值 +6 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Lancigar + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小天使xx + 1 谢谢@Thanks!
Coptis_china + 1 谢谢@Thanks!
Ldfd + 1 大佬人均小白
dzc123456 + 1 用心讨论,共获提升!
kof888 + 1 + 1 我很赞同!
joneqm + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

c4bbage 发表于 2020-4-16 09:51
附件好像不是这个,也是刚学习破解,不懂原理 ,只懂一顿操作
拖入od  BP  MessageBoxA
1.png
断点在
0018F6E8  |75F1DE11  返回到 msvcrt.75F1DE11 来自 msvcrt.75F1DE1B
enter 进入到
75F1DE11    这个应该是返回的地址
F8跟进
2.png
把jnz改成je
QQ图片20200416095059.png
是这样么
1.png
 楼主| 疯如初 发表于 2020-4-16 10:17
本帖最后由 疯如初 于 2020-4-16 10:19 编辑
c4bbage 发表于 2020-4-16 09:51
附件好像不是这个,也是刚学习破解,不懂原理 ,只懂一顿操作
拖入od  BP  MessageBoxA

那个是kctf的第一题,是不允许直接爆破的,要找出作者设的密码,我本来发的这一篇,后来发现比赛还没结束。。。。我就换成这一篇了
等那边结束以后,我把你那个附件的我的做法发下
冷诗烟 发表于 2020-4-16 06:08
 楼主| 疯如初 发表于 2020-4-16 06:12
冷诗烟 发表于 2020-4-16 06:08
零基础几天就这么厉害?🐮

逆向就学了几天,但汇编之前学了一段时间(但编译器写出来的汇编看的真头疼)
wapjcxz 发表于 2020-4-16 06:20
学习一下,了解了解
kof888 发表于 2020-4-16 06:31
cdq这指令第一次看见用
 楼主| 疯如初 发表于 2020-4-16 06:38
kof888 发表于 2020-4-16 06:31
cdq这指令第一次看见用

我也是第一次(临时搜的百度,然后看到百度一群人骂这个指令,说他鸡肋。。。)
你与明日 发表于 2020-4-16 06:49
比赛还没结束你就发题解?
 楼主| 疯如初 发表于 2020-4-16 06:54
本帖最后由 疯如初 于 2020-4-16 07:11 编辑
你与明日 发表于 2020-4-16 06:49
比赛还没结束你就发题解?

不是结束了吗
-----更新-----
我刚去看了下,没结束。。。我的错
我删掉了并换了篇我之前写的另一个文章
谢谢提醒
我以为只持续一天的,我还过了一天发(因为昨天我看公众号上说持续一天,刚看了下,是每天开一个。。。。我的错)
wjwddd 发表于 2020-4-16 07:16
楼主不简单,学习一下,了解了解
15295828305 发表于 2020-4-16 07:59
楼主加油
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-27 18:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表