吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8432|回复: 3
收起左侧

[会员申请] 申请会员ID:葫芦娃很厉害【申请通过】

[复制链接]
吾爱游客  发表于 2018-12-31 16:07
1、申 请 I D:葫芦娃很厉害
2、个人邮箱:2951934595@qq.com
3、原创技术文章:某算命软件爆破+算法研究+注册机(原创证明:软件&注册机标题为“吾爱破解申请专用”)


申请人情况自述
安全从业者多年(白帽渗透,代码审计),几年前玩过逆向,目前越来越多涉及逆向病毒分析,重新拾起来逆向,想来吾爱破解学习交流

正题
一.脱壳
  • 常规壳,直接peid脱掉
  • 注意要在xp中脱,win7 x64会有问题
脱壳前 壳1.png 脱壳 脱壳1.png 二.观察程序逻辑和特点
  • 运行标题显示机器码
  • 可以点击注册输入注册码注册
  • 使用时会弹框告知未注册
标题:机器码10370229199已经修改了“吾爱破解申请专用 申请标题1.png 使用时会提示 使用过程中的软件为注册提示.png 输入伪码“123456”,注册错误弹框 错误提示.png
三.定位关键跳尝试爆破1.常规方式爆破输入验证码流程弹窗内容入手,搜索关键字定位到弹窗函数,并做标签,关键跳nop掉或者jnz改jz测试爆破效果,发现确实弹框说注册完成! 关键跳.png 2.发现问题,深入推测程序验证逻辑流程但是,重启程序后发现依旧出现未注册一样的机器码标题,同时再使用过程中还是提示未注册弹框,并且确实程序功能受限!同时还发现,程序目录下的reg.txt被写入了内容,注册码为刚才强行爆破的伪码“123456”!由此思考如下
  • 爆破掉输入注册码流程,没有实质意义
  • 输入注册码正确的流程中包含了向reg.txt写入注册码的功能
  • 程序启动会验证是否正确注册
  • 程序使用过程中会再次验证是否正确注册
  • 他们验证的依据是什么,注册表?某临时文件等?
  • reg.txt起到什么作用?
带着以上推测和思考继续,我们从关键跳【0040802A】处往上浏览,找到此块入口,下断点,F8步过粗略分析反汇编代码,并在过程中留意寄存器、堆栈、内存数据窗口的变化,发现关键跳处基本代码功能如下 二次分析.png 既然我们推测【0041D510】这是个计算函数的入口,那么我们就搜索一下,整个程序有多少地方调用了【0041D510】这个函数,查找——所有命令,输入call 004dD510,如图 查找所有命令.png 结果搜到4个位置,依次跟过去浏览后发现,结构跟这里几乎如出一辙,皆是上上图推测的:计算函数1——赋值给ebp——计算函数2——结果乘以37给edx——然后cmp ebp,edx  ——最后关键跳。
随后我们通过下断点,依次分析这四个搜索结果(排除我们输入注册码的地方,其实只有三个),依次做好注释,如下图,功能,爆破节点一目了然 四处判断.png 依次在四个关键跳处爆破,就可以完成完美爆破
  • 标题显示(已注册)
  • 使用不受限,不弹框,并且显示”大运“等注册版才显示的内容
  • 点击注册,会显示程序已注册,并显示上次输入的注册码为不可选状态

爆破结果可见上传的内容(爆破&修改题目.exe)截至到此实际已经完全不受限了,接下来我们搞算法和注册机

、研究算法1.验证做实程序注册验证流程
F8边步过边精读从块入口到关键跳的所有反汇编代码,注意观察寄存器、堆栈、内存的变化,注意敏感信息的获取,及时把可能是函数返回值的数值翻译10进制、8进制并和已知信息例如机器码,输入的伪码"123456"发散性找关联,做好函数标签和注释,结果如下确定了取输入伪码的函数 取输入码.png 做好函数标签 推测流程.png
2.研究机器码hash函数我们已知机器码是10370229199,我们F7步入“hash机器码函数”,即【call 0041D510】,发现如下图 机器码hash过程.png 可以发现,【call 0041D750】执行完毕后,eax中值转化为十进制就是机器码去掉1037后的部分,这就简单了,本来作者头疼还真是例如硬件码hash的取值过程,一定很变态……,好在我们这里不用纠结那个了,这样以来我们掌握的机器码10370229199就可以跟计算函数最终结果直接挂上可以掌控的关系,这就好解决了,这里讨个巧,既然是c++写的,我们直接上IDA翻译伪源码,来解决229199到最终值的计算过程,方法如下(新手不建议这样,还是建议逐行研究反汇编代码)IDA直接跳转函数入口,得到流程图模式的反汇编代码 ida流程-机器码hash.png F5翻译伪源码 机器码hash-F5伪源码.png 3.研究输入注册码的hash函数(精读算法)此部分我们就不用IDA讨巧了,一行一行反汇编代码读"密码本"初始化,一共99个 key本赋值.png 密码本在堆栈内存中赋值过程动图,录了好多遍才弄好,看着有点牛逼 生成key本.gif 核心算法反汇编代码精读注释 算法分析.png 翻译成C语言 核心算法.png
四.注册机既然可以通过机器码明文计算出程序内需要最终对比的目标hash值,又知道了输入的注册码如何hash出对比值的算法,那么穷举注册码就可以了,但是通过注册码的核心算法hash过程,可以减少穷举范围,这个就是人类思维的强大之处,核心代码如下 注册代码.png 注册机效果如下 GIF.gif GIF2.gif


链接: https://pan.baidu.com/s/11Tr_kNhkPEzLJpUhci6BUQ 提取码: juuj

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

Hmily 发表于 2019-1-7 11:13
I D:葫芦娃很厉害
邮箱:2951934595@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登录后把文章整理一下发到脱壳破解区吧。
葫芦娃很厉害 发表于 2019-1-8 14:29
葫芦娃很厉害 发表于 2019-1-8 14:30
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-3-29 23:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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