CrackMe —— 016

160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

CrackMe简称CM。
程序下载地址:点击我

来源 <-点击查看

编号 作者 保护方式
016 bjanes Serial(VB5)

工具

x32dbg

VB Decompiler Pro

开始破解之旅

ON.1

爆破方式

使用x32dbg打开016号程序

右键 搜索->当前模块->字符串

我们看见了错误提示字符串地址00403A69和正确提示字符串地址00403AE9

我们进入错误提示字符串地址00403A69处向上查看

004039FE | 83C4                   | add esp,                              |
00403A01 | :85FF | test di,di |
00403A04 | 1C | jne bjcm20a.403A22 |跳转处 跳转到00403A22
00403A06 | 8B7D | mov edi,dword ptr ss:[ebp+] |
00403A09 | B8 | mov eax, |
00403A0E | : E8 | add ax,word ptr ss:[ebp-] |
00403A12 | 0F80 | jo bjcm20a.403BAC |大跳
00403A18 | E8 | mov dword ptr ss:[ebp-],eax |
00403A1B | 33DB | xor ebx,ebx |
00403A1D | E9 5AFDFFFF | jmp bjcm20a.40377C |
00403A22 | 33DB | xor ebx,ebx |
00403A24 | 8B35 A4104000 | mov esi,dword ptr ds:[<&__vbaVarDup>] |
00403A2A | B9 | mov ecx, |
00403A2F | 894D | mov dword ptr ss:[ebp-],ecx |
00403A32 | B8 0A000000 | mov eax,A | A:'\n'
00403A37 | 894D A8 | mov dword ptr ss:[ebp-],ecx |
00403A3A | BF | mov edi, |
00403A3F | 8D95 50FFFFFF | lea edx,dword ptr ss:[ebp-B0] | edx:EntryPoint
00403A45 | 8D4D B0 | lea ecx,dword ptr ss:[ebp-] |
00403A48 | | mov dword ptr ss:[ebp-],eax |
00403A4B | A0 | mov dword ptr ss:[ebp-],eax |
00403A4E | C785 58FFFFFF F0224000 | mov dword ptr ss:[ebp-A8],bjcm20a.4022F | 4022F0:L"Wrong serial!"
00403A58 | 89BD 50FFFFFF | mov dword ptr ss:[ebp-B0],edi |
00403A5E | FFD6 | call esi |
00403A60 | 8D95 60FFFFFF | lea edx,dword ptr ss:[ebp-A0] | edx:EntryPoint
00403A66 | 8D4D C0 | lea ecx,dword ptr ss:[ebp-] |
00403A69 | C785 68FFFFFF C8224000 | mov dword ptr ss:[ebp-],bjcm20a.4022C | 4022C8:L"Sorry, try again!"

我们看到了最近的跳转处是00403A1D 该处是一个向上跳的JMP明显不是我们要找的跳转,在往上00403A12是一个向下的大跳也不是我们要找的跳转,再往上00403A04是一个跳转到00403A1D下发的地址可能是我们要找的跳转,在此处下断点

F9运行,在输入框内输入任意数据,点击Check it按钮,没有在跳转处暂停,我们在下一条指令下设置断点,再次点击按钮,此时程序暂停到了我们的断点处

由此可知,程序是通过别处跳转到00403A24处

我在x32dbg内右键 搜索->当前模块->常数   在输入框内输入00403A24点击确定

搜索到一处引用的地址

点击进入该地址,在此处下断点

再次点击Check it 按钮

此时程序停在了我们刚刚设置的断点处,我们单步向下

此时可以看出程序跳转到了错误信息提示处,我们将00403A04处的指令改为NOP,F9运行

bingo~ 此时破解成功

ON.2

注册机方式

我们使用VB Decompiler Pro打开016号程序

发现和我们的014号程序代码一样

附上我们的注册机代码

code = ''
for i in range(1, 10):
a = i ^ 2
code = code + str(a)[-1]
print(code)

得出结果为我们输入到输入框内,点击Check it按钮

bingo ~ 破解成功

最新文章

  1. BSBuDeJie_01
  2. Chrome 中的 JavaScript 断点设置和调试技巧
  3. centos mysql 大量数据导入时1153 错误:1153 - Got a packet bigger than &#39;max_allowed_packet&#39; bytes
  4. IDE神器intellij idea的基本使用
  5. Iaas-cloudstack2
  6. 关于MyBatis的工作流程
  7. CentOS安装Nginx,并配置nodejs反向代理
  8. AES算法简介
  9. ECSHOP首页站内快讯在哪里添加和修改?
  10. nginx 504 Gateway Time-out 解决办法
  11. @pathvariable 注解
  12. 【Ionic+AngularJS 开发】之『个人日常管理』App(二)
  13. jsonp学习
  14. java 自定义的注解有什么作用
  15. 小程序重新封装打印函数console.log
  16. [Swift]LeetCode1022. 从根到叶的二进制数之和 | Sum of Root To Leaf Binary Numbers
  17. POJ 1251 Jungle Roads (最小生成树)
  18. Chrome_查看 webSocket 连接信息
  19. 安装pytorch成功但cuda不可用
  20. PAT-Top1001. Battle Over Cities - Hard Version (35)

热门文章

  1. BI之路学习笔记1--SSIS包的认识和设计
  2. 关于python3与python2同时存在情况下导入pyqt失败解决记录
  3. 阿里云服务器连接以及centos 搭建 web java环境(linux java部署 tomcat部署)
  4. Windows 使用 helm3 和 kubectl
  5. Scrapy框架安装失败解决办法
  6. 【iOS】NSNotification 常用方法
  7. Java连载10-数据类型取值范围&amp;转义字符
  8. GitHub 用户排行榜
  9. .Net集合详解
  10. JS中以一个方法作为参数的写法