程序下载地址: 点我 提取码: h4vi
运行程序,这里提示我们需要一个密钥文件

先进行爆破,丢进OD分析:

这里我们可以从注释得知我们的密钥文件名字为"Keyfile.dat",可以猜想,程序的算法比对的是从这个文件读出密钥,运用设计好的算法,校验合法性…

看到上面组合条件跳转,就该注意了…

到这里正常执行的话,可以看到EAX=-1(补码),则cmp eax,-0x1会把Z flag置为1(因为eax和-1相等)
JNE检查Z标志位,当Z=0时实现跳转

这里如果不是先跳转,该指令继续向下执行则从注释我们观察到,会调用一个提示需要密钥文件的MessageBox接着调用ExitProcess退出程序,所以这一步,我们需要让跳转实现…因为这里用的是爆破,所以实现跳转的话,我们可以修改jne指令为jmp不加判断,直接跳转…

F8…来到这里

可以看到,这里会是读取我们的Keyfile读取内容,我们不管,继续执行

执行到这里,我们注意到判断跳转未实现,则接下来时jmp强制跳转指令,由指令参数,我们看下会到哪里…

可以看到,jmp指令到的位置由注释可以看到时提示我们的密钥错误,并且弹出消息退出程序,由此,我们可以知道,我们的jmp是不能执行的,因此需要让我们的jnz指令实现跳转,跨过jmp指令…
jnz指令检查Z flag 当Z flag为0时跳转实现,因此,我们可以修改Z为0

继续执行F8单步

可以初步判定,这里是算法部分,检验密钥的实现算法
第一个跳转,我们可以追红线下去,看到执行的还是提示错误密钥的信息(不截图了),因此,我们不能让他跳转(我们可以该标志位,也可以修改这个指令为nop),这里我们修改指令为nop

这里的跳转下去,并非错误信息,跟进

跳转实现,到提示错误的信息,

因此还是不能让它实现…nop继续填充

跟随jmp下去…

注释,我们看到,提示成功信息了…

到此,我们爆破结束…
接下来,我们尝试探究它的密钥,尝试走验证来通过程序验证。。.
执行到这里,由注释内容,我们可以判断,执行了ReadFile的api读取了我们Keyfile.dat的内容,因此,需要在程序目录下建一个Keyfile.dat文件。

API会是我们的切入点,注意到这个ReadFile的参数注释有一个地址跟我们接下来的cmp指令地址一样,我们可以查看文档,看下ReadFile的第4个参数(由入栈顺序可以判定)什么意思…

原来是读取的字节数…由此,结合下面的cmp指令,就是判断读出来的密钥有没有多于0x10(16),因此我们回到keyfile写入16个字节的内容,

继续看下算法的实现…

可以看到,跳转被我们改变了,由此验证的第一道坎,密钥长度,我们通过了,接下来:


可以看到,实际上就是把读取出来的内容放到al中,然后跟0x0比较判断是否读取到的内容为空

到了这里又跟0x47进行cmp运算不等时则跳转…

由图片可以看到,进入了一个循环,然后寄存器对应累加。。这里就是每次拿出一位跟47比较判断,循环它读出来的字节数(0x10)16
因此,我们可以构造我们的Keyfile.dat了,47ASCII对应是G
因此,修改我们的Keyfile.dat为16个以上的G:
直接运行程序…:

得到成功返回信息…结束

总结:API作为切入点能很好的理解程序做了些什么…

逆向学习:破解一个小程序相关推荐

  1. 小程序工程化实践(上篇)-- 手把手教你撸一个小程序 webpack 插件,一个例子带你熟悉 webpack 工作流程...

    本文基于 webpack 4 和 babel 7,Mac OS,VS Code 小程序开发现状: 小程序开发者工具不好用,官方对 npm 的支持有限,缺少对 webpack, babel 等前端常用工 ...

  2. 电影周周看——适合新手学习的微信小程序

    电影周周看--适合新手学习的微信小程序 一个极其适合新手学习的微信小程序--电影周周看.在这里你可以学习到小程序开发的基本流程和基本方法,麻雀虽小,五脏俱全.搭配学堂在线的教学视频食用更佳!针对教学视 ...

  3. 怎样自己制作一个小程序?新手必知流程!

    随着市场需求的变化.不断成长的微信平台.随着周边小程序等功能的发布,商店公司开发小程序已经成为一种趋势.但是对于怎样自己制作一个小程序,很多卖家公司还是"新手",不明白应该使用什么 ...

  4. 从0开始学习开发微信小程序(熟悉微信开发者工具页面,简单修改、添加一些内容)

    目录 从0开始学习开发微信小程序 准备工作 下载安装微信开发者工具.注册小程序账号 创建小程序 实际操作学习基本功能 写一个名为new的页面. 修改主页的"Hello World" ...

  5. 学习使用微信小程序动态获取当前时间并实时跳动

    学习使用微信小程序动态获取当前时间并实时跳动 1.修改util.js 2..js函数构造 3.wxml页面显示固定时间 1.修改util.js const formatTime = date => ...

  6. 【自己开发小程序】自己怎么开发一个小程序呢?

    如何自己开发小程序?这是很多创业者甚至普通人的困惑.小程序不知道什么时候慢慢垄断了我们的生活.成为我们不可或缺的一部分.很多时候,当我们点奶茶扫自行车扫充电宝的时候,我们会第一时间想到小程序,甚至当我 ...

  7. 电子学习用品商城小程序开发功能需求分析

    全民教育素质随着国人生活水平的提升得到大幅提高,传统的学习用品已经很难满足时代发展和社会进步的要求,现在孩子学习更注重学习用品的高效性.便捷性,对学习用品要求的强大拉力在很大程度上促进了电子学习用品的 ...

  8. 做一个小程序的完整流程

    一. 引言 最近在帮朋友开发一个小程序,都说今年是小程序快速发展的一年,不懂技术的人,大部分零售店面都开始想做一个小程序帮助推广销售.虽然小程序技术门槛没那么高,但自己独立做一个小程序还是需要了解的内 ...

  9. 运营一个小程序或公众号需要哪些准备工作多少钱?

    运营一个小程序或公众号需要哪些准备工作. 首先你要有公司资质或个人商户资质,需要营业执照. 服务器一年大概需要1200左右.这个公开的,没什么好讲. 域名也不多,一年几十块. 公众号及小程序认证费,一 ...

最新文章

  1. 《算法导论》学习总结 — 13. 第13章 红黑树(2)
  2. Centos 用户组管理
  3. CVPR 2021 | 基于跨任务场景结构知识迁移的单张深度图像超分辨率方法
  4. Codeforces Round #168 (Div. 2)---A. Lights Out
  5. linux php 添加gd,linux(centos)下为php添加添加GD扩展
  6. Git初学札记(零)————EGIT完成Eclipse到GitHub一条龙
  7. zendstudio快捷键收录
  8. EasyUI,对treegrid进行编辑
  9. android之调用webservice实现图片上传
  10. 计蒜客:区间整数操作-区间更新-区间和
  11. 团队作业——系统设计和任务分配
  12. python更换证件照背景
  13. matlab数据存成脚本,matlab的excel的读和写(生成脚本m文件)
  14. 基于PHP的网上书店系统(前后台)
  15. 用LM350制作简单可调电源
  16. STM32—建立工程模板
  17. 网站如何实现短信验证码功能?
  18. Python爬虫第三课:我的人生第一只爬虫
  19. 用Xposed框架拦截微信、人人、QQ等LBS应用的当前位置
  20. oracle 查看锁表 清除锁表

热门文章

  1. 抖音小店VS淘宝店铺,哪个更有优势?
  2. 1100 Mars Numbers (20分)
  3. 五大经典算法-动态规划 及其算法应用
  4. Excel绘制散点图并拟合输出公式和R值
  5. Elastic Certified Engineer复习记录-复习题详解篇-索引数据(2)
  6. 项目管理十大流程,让你轻松管理项目
  7. 计算机组成原理ACC中文含义,计算机组成原理 作业一
  8. R语言之Rstudio 导入包
  9. 此生,依旧是我未看破红尘。
  10. 计算机作业我家乡的变化英语作文,我家乡的变化英语作文(精选12篇)