160 - 25 CodeZero.1
环境
Windows xp sp3
工具
exeinfope
OllyDBG
查壳
无壳的VB程序
测试
运行程序后出现Nag窗口,所以这次的目标是除Nag窗口和找到serial
程序运行后弹出Nag窗口,并且等待5秒后按钮的标题改成“Continue..”,点击后才会弹出输入serial的窗口。
字符串搜索可以一下子知道serial的内容:
00405721 . 68 A4264000 push CodeZero.004026A4 ; UNICODE "55555"
00405726 . E8 3BBAFFFF call <jmp.&MSVBVM50.__vbaStrCmp>
0040572B . 8BF0 mov esi,eax
0040572D . 8D4D E8 lea ecx,dword ptr ss:[ebp-0x18]
00405730 . F7DE neg esi
00405732 . 1BF6 sbb esi,esi
00405734 . 46 inc esi
00405735 . F7DE neg esi
00405737 . E8 18BAFFFF call <jmp.&MSVBVM50.__vbaFreeStr>
0040573C . 8D4D E4 lea ecx,dword ptr ss:[ebp-0x1C]
0040573F . E8 0ABAFFFF call <jmp.&MSVBVM50.__vbaFreeObj>
00405744 . 6A 0A push 0xA
00405746 . 66:3BF3 cmp si,bx
00405749 . 58 pop eax
0040574A . B9 04000280 mov ecx,0x80020004
0040574F . 6A 08 push 0x8
00405751 . 894D AC mov dword ptr ss:[ebp-0x54],ecx
00405754 . 5E pop esi
00405755 . 894D BC mov dword ptr ss:[ebp-0x44],ecx
00405758 . 8945 A4 mov dword ptr ss:[ebp-0x5C],eax
0040575B . 8945 B4 mov dword ptr ss:[ebp-0x4C],eax
0040575E . C745 8C 68264>mov dword ptr ss:[ebp-0x74],CodeZero.004>; UNICODE "VB Crack-Me 1.0 by CodeZero"
00405765 . 8975 84 mov dword ptr ss:[ebp-0x7C],esi
00405768 . 8D55 84 lea edx,dword ptr ss:[ebp-0x7C]
0040576B . 8D4D C4 lea ecx,dword ptr ss:[ebp-0x3C]
0040576E . 74 2A je XCodeZero.0040579A
00405770 . E8 CDB9FFFF call <jmp.&MSVBVM50.__vbaVarDup>
00405775 . 8D55 94 lea edx,dword ptr ss:[ebp-0x6C]
00405778 . 8D4D D4 lea ecx,dword ptr ss:[ebp-0x2C]
0040577B . C745 9C B4264>mov dword ptr ss:[ebp-0x64],CodeZero.004>; UNICODE "Congratulations! you've really made it :-)"
00405782 . 8975 94 mov dword ptr ss:[ebp-0x6C],esi
00405785 . E8 B8B9FFFF call <jmp.&MSVBVM50.__vbaVarDup>
0040578A . 8D45 A4 lea eax,dword ptr ss:[ebp-0x5C]
0040578D . 50 push eax
0040578E . 8D45 B4 lea eax,dword ptr ss:[ebp-0x4C]
00405791 . 50 push eax
00405792 . 8D45 C4 lea eax,dword ptr ss:[ebp-0x3C]
00405795 . 50 push eax
00405796 . 6A 40 push 0x40
00405798 . EB 28 jmp XCodeZero.004057C2
0040579A > E8 A3B9FFFF call <jmp.&MSVBVM50.__vbaVarDup>
0040579F . C745 9C 10274>mov dword ptr ss:[ebp-0x64],CodeZero.004>; UNICODE "Invalid unlock code, please try again."
004057A6 > 8D55 94 lea edx,dword ptr ss:[ebp-0x6C]
004057A9 . 8D4D D4 lea ecx,dword ptr ss:[ebp-0x2C]
004057AC . 8975 94 mov dword ptr ss:[ebp-0x6C],esi
004057AF . E8 8EB9FFFF call <jmp.&MSVBVM50.__vbaVarDup>
字符串明文比较
剩下来就是去除Nag窗口了:
OD打开程序后让程序运行起来,等显示“continue..”后对.text段下内存访问断点,然后让程序运行,多按几次F9就可以来到这里。
00402330 . 816C24 04 570>sub dword ptr ss:[esp+0x4],0x57
00402338 . E9 85360000 jmp CodeZero.004059C2 ; 用来显示输入serial窗口
0040233D . 816C24 04 330>sub dword ptr ss:[esp+0x4],0x33
00402345 E9 7B370000 jmp CodeZero.00405AC5 ; 用来显示Nag窗口的“5”
0040234A . 816C24 04 3F0>sub dword ptr ss:[esp+0x4],0x3F
00402352 E9 77380000 jmp CodeZero.00405BCE ; 用来显示Nag窗口的“4”
00402357 . 816C24 04 430>sub dword ptr ss:[esp+0x4],0x43
0040235F E9 73390000 jmp CodeZero.00405CD7 ; 用来显示Nag窗口的“3”
00402364 . 816C24 04 470>sub dword ptr ss:[esp+0x4],0x47
0040236C E9 6F3A0000 jmp CodeZero.00405DE0 ; 用来显示Nag窗口的“2”
00402371 . 816C24 04 4B0>sub dword ptr ss:[esp+0x4],0x4B
00402379 E9 6B3B0000 jmp CodeZero.00405EE9 ; 用来显示Nag窗口的“1”
0040237E . 816C24 04 530>sub dword ptr ss:[esp+0x4],0x53
00402386 E9 673C0000 jmp CodeZero.00405FF2 ; 用来显示Nag窗口的“continue..”
会发现即使在上面的指令里下了断点也无法阻挡Nag窗口的出现,表面Nag窗口的指令比这些还要早就执行了。
观察这些jmp所跳到的地方,发现[004059C2]是最小的,如果跟到[004059C2],会发现这段指令上面还有很多指令。
0040595C |. 57 push edi
0040595D |. 50 push eax
0040595E |. E8 F7B7FFFF call <jmp.&MSVBVM50.__vbaHresultCheckObj>
00405963 |> 833D 38704000>cmp dword ptr ds:[0x407038],0x0
0040596A |. 75 0F jnz XCodeZero.0040597B
0040596C |. 68 38704000 push CodeZero.00407038
00405971 |. 68 B01D4000 push CodeZero.00401DB0
00405976 |. E8 B5B7FFFF call <jmp.&MSVBVM50.__vbaNew2>
0040597B |> 8B35 38704000 mov esi,dword ptr ds:[0x407038]
00405981 6A FF push -0x1
00405983 56 push esi
00405984 8B06 mov eax,dword ptr ds:[esi]
00405986 FF90 BC010000 call dword ptr ds:[eax+0x1BC] ; 这里是生成Nag窗口的地方
0040598C |. 85C0 test eax,eax
0040598E |. 7D 11 jge XCodeZero.004059A1
00405990 |. 68 BC010000 push 0x1BC
00405995 |. 68 C8274000 push CodeZero.004027C8
0040599A |. 56 push esi
0040599B |. 50 push eax
0040599C |. E8 B9B7FFFF call <jmp.&MSVBVM50.__vbaHresultCheckObj>
004059A1 |> 8365 FC 00 and [local.1],0x0
004059A5 |. 8B45 08 mov eax,[arg.1]
004059A8 |. 50 push eax
004059A9 |. 8B08 mov ecx,dword ptr ds:[eax]
004059AB |. FF51 08 call dword ptr ds:[ecx+0x8]
004059AE |. 8B4D EC mov ecx,[local.5]
004059B1 |. 8B45 FC mov eax,[local.1]
004059B4 |. 5F pop edi
004059B5 |. 5E pop esi
004059B6 |. 64:890D 00000>mov dword ptr fs:[0],ecx
004059BD |. 5B pop ebx
004059BE |. C9 leave
004059BF \. C2 0400 retn 0x4
004059C2 > 55 push ebp ; 这里往下是生成输入serial窗口的地方
004059C3 . 8BEC mov ebp,esp
[004059C2]上面的指令具体又是什么时候实现的呢?
可以找到大多数每段指令开始的地方看一看
push ebp
于是找到了这个:
0040583D /> \55 push ebp
然后就跟到了这里来:
00401D88 . 816C24 04 330>sub dword ptr ss:[esp+0x4],0x33
00401D90 . E9 5F380000 jmp CodeZero.004055F4 ; 这个是响应点击“Check”
00401D95 . 816C24 04 370>sub dword ptr ss:[esp+0x4],0x37
00401D9D . E9 9B3A0000 jmp CodeZero.0040583D ; 这个是响应点击“About”
00401DA2 . 816C24 04 3F0>sub dword ptr ss:[esp+0x4],0x3F
00401DAA . E9 563B0000 jmp CodeZero.00405905 ; 这个是跳到生成Nag窗口的
现在就可以去除Nag窗口了,只需要把:
0040583D /> \55 push ebp
改为:
00405905 C2 0400 retn 0x4
然后再将:
00402345 E9 7B370000 jmp CodeZero.00405AC5 ; 显示“5”
改为:
00402345 /E9 78360000 jmp CodeZero.004059C2 ; 显示输入serial的窗口
patch后就可以去除Nag窗口了。
而serial则是“55555”
160 - 25 CodeZero.1相关推荐
- Sizes of tensors must match except in dimension 1. Expected size 24 but got size 25 for tensor numbe
在做图像分割的时候遇到了错误,错误如下: File "D:/segmentation/Pytorch-UNet-master/train.py", line 193, in < ...
- 【PHP源码分析】small内存规格的计算
作者:李德 small内存分配计算bin_num 在PHP源码中,有一段对small内存规格的计算,具体在Zend/zend_alloc.c的zend_mm_small_size_to_bin函数中, ...
- Nginx Java环境(tomcat)支持
作者:diege 时间:2012-04-25 操作系统:FreeBSD 动静态请求相分离的一个实例 一.安装软件 1.安装nginx 和JDK # cd /usr/ports/www/nginx & ...
- 小猿圈html5教程之canvas绘制线段方法
HTML5现在是时下较火的编程语言之一,但是对于怎么学习很多朋友都是不了解的,不知道从何处下手,针对以上内容小猿圈web前端讲师每天会分享一个web前端知识,希望对你的前端学习有一定的帮助,今天分享的 ...
- php从内存中获取源码_【PHP7源码分析】PHP内存管理
作者: 顺风车运营研发团队 李乐 第一章 从操作系统内存管理说起 程序是代码和数据的集合,进程是运行着的程序:操作系统需要为进程分配内存:进程运行完毕需要释放内存:内存管理就是内存的分配和释放: 1. ...
- 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 4 章 答案
判断对错 1.利用 grAphiCs.py 可以在 Python 的 shell 窗口中绘制图形. 2.传统上,图形窗口的左上角坐标为(0,0). 3.图形屏幕上的单个点称为像素. 4.创建类的新实例 ...
- 计算机 课题学科代码,学科分类与代码表课题.doc
附件3 学科分类与代码表 110 数学 110.11 数学史 110.14 数理逻辑与数学基础 110.17 数论 110.21 代数学 110.24 代数几何学 110.27 几何学 110.31 ...
- OpenCV-Python 中文教程(搬运)目录
OpenCV-Python 中文教程 OpenCV官方教程中文版(For Python) OpenCV2-Python-Tutorials 段力辉 译 说明:搬运自linux公社pdf文件,粗略搬运, ...
- 创建Hbase Hive外部表报错: Unable to determine ZooKeeper ensemble
创建HBase的Hive外部表 1: create external table ttt(rowkey string,info map<string,string>)STORED BY ' ...
最新文章
- pandas将dataframe日期数据列的日期转化为日期当月第一天(每月1号)的日期并生成新的数据列(Setting date to beginning of month in dataframe)
- Google的TensorFlow,微软CNTK, Amazon 的MxNet,Facebook 的Caffe2, PyTorch,国内百度的PaddlePaddle...
- Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
- PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名
- docker 修改服务器,docker-修改容器挂载目录的3种方法小结
- 在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体
- swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类
- 如果服务器开机显示NObootable,电脑开机出现“No bootable device”的解决办法
- android 属性动画实例,Android属性动画完全解析 中 ,ValueAnimator和ObjectAnimator的高级用法...
- 新IT运维模式下,全栈溯源助你解应用性能监控难题
- vue-devtoools 调试工具安装
- Linux常用命令之:软件安装命令
- iOS解决融云的 attempt to delete row 0 from section 0 which only contains 0 rows before the update 问题
- 计算机类专业试题及答案,2010年计算机类专业试题及答案
- 小白学习MySQL - 表空间碎片整理方法
- 计算机京东账户安全退出,京东账号如果提示存在风险该怎么解除?
- 文学类的论文真的不需要数据么?
- js实现table或ul的自动滚动
- 关于虚拟机的十个基本小技巧
- 工作心得之接口数据同步