首页
社区
课程
招聘
[分享]sdher 兄弟留意了,"VB无注册提示"贴中给的东西已追踪出算法
发表于: 2007-4-15 21:54 4698

[分享]sdher 兄弟留意了,"VB无注册提示"贴中给的东西已追踪出算法

2007-4-15 21:54
4698
这个东东花了我整整两天的时间,
这个周末没干别的事了...

这是我头一次将VB的P-CODE程序分析完成

由于这个程序脱壳后所有的VB反编译器都无法将其正确识别成VB的东西
所以只能在WKTVBDE中那小小的窗口来查看它的伪指令
以此来进行分析
所以花了我很长时间

而且WKTVBDE的伪指令查看窗口不能翻页
根本看不清楚它是上下跳转关系
不得不另外记下很多指令的地址
一碰上跳转
先查记下的地址

甚至有的代码是条件执行的
为了将一段代码看完整
不得不反复进行数据的修改
惨啊...

如果谁知道怎么修改能让常见的反编译器认出来
请一定赐教

也由于这个原因
我无法将程序的代码和我的注释粘贴上来

我这里只说一下关键点
上回我发贴说找到了内存中比较的关键位置
但后来发现那里根本就没有进行计算

程序的注册码的计算是在程序启动时进行的
而注册页面只是将输入的字符串和已经算好的注册码进行比较
如果正确就激活"注册"按钮
而点击"注册"按钮后
程序会再次进行判断注册码是否正确
是通过调用一个子过程来判断的

但如何定位计算注册码的位置可难住了我
昨天上午便主要在寻找关键指令的位置

后来我发现程序在启动还没有出现界面时就会调用上面提到的判断函数

而这时还没有输入
那么程序定是将注册码保存起来了

查找注册表
发现了它的保存注册码和注册日期的位置

但在WKTVBDE中的API断点并没有看到有 RegQueryValue 这样的函数
怎么办


我的办法是在OD中下断
断下后返回到VB的VM空间
查看其ESI便得到此时的P-CODE的偏移了

回到WKTBEDE中
直接下断
断下后看到WKTVBDE上面的提示
Proc.Range xxxx - xxxx
记下这个函数的起始地址
重新载入
下断

我们来到了函数004e3d80
这个函数就是计算注册码的地方了
经过分析
这个过程被调用3次
根据一个参数是1.2.3有三种不同流程
计算结果分别是三个注册码

关于注册算法
我自己写了一个简陋的算号机

可是在贴子中贴出来有点太长了
有约200行大概

这样吧
我将它上传到sdher兄弟在原贴中提供的空间上
有兴趣的朋友可以下来看看
大家交流一下

原贴地址
http://bbs.pediy.com/showthread.php?t=42074

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
写得不错。学到了!
2007-4-16 10:41
0
雪    币: 205
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
书兄厉害啊,我COPY下来慢慢学习
2007-4-16 19:19
0
游客
登录 | 注册 方可回帖
返回
//