适合新手的160个creakme(二)
先跑一下,然后找出关键字符串


关键字符串是You Get Wrong和Try Again,不过IDA好像识别不出来这个字符串,在Ollydbg中右键Search For,寻找所有字符串,可以找到这些字符串,好像是unicode码,可能IDA没有办法识别
然后定位到代码
.text:004025E5 push offset aYouGetWrong ; "You Get Wrong"
然后定位到调用代码,这里的跳转如果被忽略那么就可以直接跳转到正确结果
.text:0040258B jz short loc_4025E5
直接在Ollydbg中改写这个地方的指令,右键binary->edit,将这两个指令改成nop

然后就ok了

上面的修改说明了关键判断确实是在这里
看看这部分的代码
.text: loc_402510: ; CODE XREF: .text:004024FC↑j
.text: mov eax, [ebp-18h] ;指向UNICODE "Type In Your Serial"
.text: mov ecx, [ebp-1Ch] ;指向UNICODE "1658111"
.text: mov edi, ds:__vbaStrCat
.text:0040251C push eax
.text:0040251D push offset aAka ; "AKA-"
.text: push ecx
.text: call edi ; __vbaStrCat ;应该是VBA里面的字符串拼接函数,参数都是通过栈来传递的,返回值为AKA-1658111
.text: mov ebx, ds:__vbaStrMove
.text:0040252B mov edx, eax
.text:0040252D lea ecx, [ebp-20h]
.text: call ebx ; __vbaStrMove
.text: push eax
.text: call ds:__vbaStrCmp ;比较函数,比较的是"AKA-1658111"和序列号字符串
.text: mov esi, eax ;返回值为1,赋值给esi
.text:0040253B lea edx, [ebp-20h]
.text:0040253E neg esi ;求补运算,这里esi等于全f
.text: lea eax, [ebp-18h]
.text: push edx
.text: sbb esi, esi
.text: lea ecx, [ebp-1Ch]
.text: push eax
.text:0040254A inc esi ;加1变为0
.text:0040254B push ecx
.text:0040254C push
.text:0040254E neg esi ;求补还是0
.text: call ds:__vbaFreeStrList
.text: add esp, 10h
.text: lea edx, [ebp-28h]
.text:0040255C lea eax, [ebp-24h]
.text:0040255F push edx
.text: push eax
.text: push
.text: call ds:__vbaFreeObjList
.text: add esp, 0Ch
.text:0040256C mov ecx, 80020004h
.text: mov eax, 0Ah
.text: mov [ebp-64h], ecx
.text: test si, si ;esi为0,test设置了zf标志位
.text:0040257C mov [ebp-6Ch], eax
.text:0040257F mov [ebp-54h], ecx
.text: mov [ebp-5Ch], eax
.text: mov [ebp-44h], ecx
.text: mov [ebp-4Ch], eax
.text:0040258B jz short loc_4025E5 ;所以这里ZF标志位是1,要进行跳转
.text:0040258D push offset aYouGetIt ; "You Get It"
.text: push offset asc_401B9C ; "\r\n"
.text: call edi ; __vbaStrCat
.text: mov edx, eax
.text:0040259B lea ecx, [ebp-18h]
.text:0040259E call ebx ; __vbaStrMove
.text:004025A0 push eax
.text:004025A1 push offset aKeygenItNow ; "KeyGen It Now"
大致过一遍上面的代码,可以知道只需要序列号等于AKA-1658111就可以让比较函数返回0,然后通过后面的检测,由于AKA是固定字符串,剩下的就是看1658111这个串是怎么来的。
然后再往前找ebp-1ch在哪里被引用了
004023F3这个位置,ebp-1ch被修改为了用户名字符串,接着402415处又将该字符串作为参数调用长度,返回0x11,长度值。00402420处将长度值乘以17CFB,0040242D调用了rtcAnsiValueBstr函数,参数为用户名,返回第一个字符,该函数执行之后,eax值为0x54,T的ascll码,然后加上前面长度值乘以17CFB的结果,位0x194cff,0040243F将这个值作为参数调用了__vbaStrI4函数,这个函数返回之后,eax指向字符串“1658111”,这个字符串就来了,所以这应该是数字转字符串的函数。
所以最后的算法应该是用户名的长度乘以17CFB加上用户名的第一个字符,结果转成10进制,再转成字符串,加上前缀"AKA-"。
最后,可以改最后一个条件的判断码,来实现跳转转移,JE改成JNE,74改75

适合新手的160个creakme(二)的更多相关文章
- 适合新手的160个creakme(四)
这题没有什么特殊字符串,Delphi写的,使用DeDeDark分析一下,找到几个特殊的事件 一个是KeyUp 一个是chkcode 还有就是中间区域的单击或是双击事件 直接跟进去这几个函数,然后找比较 ...
- 适合新手的160个creakme(三)
先跑一下,这个程序应该是有定时器,多久之后自动开启,测试一下输入,序列号以字母方式输入会出现类型不匹配,之后程序自动退出 但是如果以数字方式输入序列号,则会出现,Try Again,所以这里序列号应该 ...
- 适合新手的160个creakme(一)
先跑一下 直接使用这个字符串去check,发现提示信息有关键字符串 CODE:0042FB80 00000021 C Sorry , The serial is incorect ! 找到这个字符串的 ...
- JavaSwing仿QQ登录界面,注释完善,适合新手学习
使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手 本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...
- 适合新手小白的UI学习路线完整版
UI设计是很多年轻人活着想转行学习的人的新职业目标,越来越多的人看到UI设计良好的就业发展前景,纷纷投入到UI设计的大军中来,想学习UI设计,很多小白并不知道从何开始学起,用什么样的方法去学习,所以今 ...
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...
- 最适合和最不适合新手使用的几款 Linux 发行版
大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...
- python环境搭建-requests的简单安装(适合新手)
安装完python之后,一定要记住安装后的路径.这是我当前的路径. 下面是requests的安装步骤: 我们这里直接用pip安装(这样比较适合新手),新版python自带pip,python3.6.1 ...
随机推荐
- powerdesigner导出rtf
报告--reports--新建reports--reports template选择None 从左侧的Available items 拖动 需要导出的item到右侧 右侧的每一个item右键 可以设置 ...
- 国内it论坛
社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流. 技术社区一般有三 ...
- python定义接口继承类invalid syntax解决办法
class s_all(metaclass=abc.ABCMeta): #python2.7用此方法定义接口继承 # __metaclass__ = abc.ABCMeta @abc.abstract ...
- jmeter 调用python的方法三种 (还没试)
参考文章1: Jmeter 运行 Python 代码进行 AK/SK 认证 (使用 OS Process Sampler) 思路是:jmeter调用shell,用shell执行py 参考文章2: Jm ...
- iOS 11适配
1.http://www.cocoachina.com/ios/20170915/20580.html 简书App适配iOS 11 2.http://www.jianshu.com/p/efb ...
- pch文件的添加
想说试了好久一直报错找不到文件,解决方法如下: 依次是:./项目名/文件夹名称/pch文件名
- jeecg启动报错“com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.”的解决办法
在运行"maven build"-->"tomcat:run"之后,报如下错误: com.mysql.jdbc.exceptions.jdbc4.MySQ ...
- C#使用MPI进行高性能计算
MPI.NET是用于Microsoft.NET环境的高性能.易于使用的消息传递接口(MPI)实现.mpi是编写在分布式内存系统(如计算集群)上运行的并行程序的事实上的标准,并且得到了广泛的实现.大多数 ...
- edusoho twig 引入文件功能
在这里不得不提 edusoho twig 模板引擎了 跟smarty 比较类似 不过感觉还是更好一点儿 这里用的标签就只有一个 {% include '路径/文件名' %} 大家在首页做的改动比较多 ...
- JS节流和防抖的区分和实现详解
参考链接:http://caibaojian.com/throttle-debounce.html