- UID
- 54196
注册时间2008-7-2
阅读权限95
最后登录1970-1-1
超级版主
TA的每日心情 | 开心 2019-2-26 11:14 |
---|
签到天数: 459 天 [LV.9]以坛为家II
|
本帖最后由 wgz001 于 2014-5-25 21:57 编辑
KeyGenme地址 KeygenMe
https://www.chinapyg.com/thread-73065-1-1.html
(出处: 中国飘云阁(PYG官方论坛) )
我一天的体会----一个keygenme的体验---猥琐
看了一天,一直不懂,问zaas要了一组可用key,还是看了好长时间,总结一下自己的体会
下断GetDlgItemTextA 运行两次后 进入到程序流程
- 00401669 . 8985 54FFFFFF MOV DWORD PTR SS:[EBP-0xAC], EAX ; 注册码位数放入[EBP-AC]
- 0040166F . 83BD 58FFFFFF>CMP DWORD PTR SS:[EBP-0xA8], 0x0 ; 比较用户名是否为空
- 00401676 . 74 09 JE SHORT dumped_.00401681
- 00401678 . 83BD 54FFFFFF>CMP DWORD PTR SS:[EBP-0xAC], 0x0 ; 比较注册码是否为空
- 0040167F . 75 05 JNZ SHORT dumped_.00401686
- 00401681 > E9 0D010000 JMP dumped_.00401793
- 00401686 > C745 FC 00000>MOV DWORD PTR SS:[EBP-0x4], 0x0
- 0040168D . 83BD 58FFFFFF>CMP DWORD PTR SS:[EBP-0xA8], 0x4 ; 用户名位数是否小于4
- 00401694 . 72 09 JB SHORT dumped_.0040169F
- 00401696 . 83BD 54FFFFFF>CMP DWORD PTR SS:[EBP-0xAC], 0x4 ; 注册码位数是否小于4
- 0040169D . 73 12 JNB SHORT dumped_.004016B1
复制代码
继续往下走到这里
- 0040171B . E8 40020000 CALL dumped_.00401960 ; 处理,F7进入
复制代码 这里是用户名和注册码的处理过程
- 00401974 |. BF 04000000 MOV EDI, 0x4 ; 计算4次
- 00401979 |> 0FBE1C0E MOVSX EBX, BYTE PTR DS:[ESI+ECX] ; ebx<----取用户名
- 0040197D |. 8B2A MOV EBP, DWORD PTR DS:[EDX] ; 上次计算的结果
- 0040197F |. 03C3 ADD EAX, EBX ; eax<----用户名相加
- 00401981 |. 0FBE19 MOVSX EBX, BYTE PTR DS:[ECX]
- 00401984 |. 03D8 ADD EBX, EAX ; ebx<----用户名加注册码
- 00401986 |. 03EB ADD EBP, EBX ; 保存结果到ebp中
- 00401988 |. 41 INC ECX ; 取注册码的下一位
- 00401989 |. 4F DEC EDI
- 0040198A |. 892A MOV DWORD PTR DS:[EDX], EBP ; 保存计算后的结果
- 0040198C |.^ 75 EB JNZ SHORT dumped_.00401979
- 0040198E |. 8B0D 70854000 MOV ECX, DWORD PTR DS:[0x408570] ;发现这里也是关键地方,可以对0x408570下内存访问
复制代码
走出这个call之后,来到下面的关键地方(异常处理应该是关键吧,但是我看不懂,还请多指点)
- 0040172B . F775 D8 DIV DWORD PTR SS:[EBP-0x28] ; 这里产生异常才会出现成功,不知道为啥,(上面的相加后会溢出,使EBP-0X28==0,然后就去异常处理了)
复制代码 下面是关键跳转,调试的时候注意观察ebp-0xb0的值
- 00401766 > \83BD 50FFFFFF>CMP DWORD PTR SS:[EBP-0xB0], 0x0
复制代码
算法总结:
假设用户名前四位ASCII码为a,b,c,d注册码前四位ASCII码为e,f,g,h,则它们满足下面的关系( 注册码的第五个符为“#”)
4a+3b+2c+d+e+f+g+h=0x586
(我不会编程,无法写注册机)
不正确的地方还请多指教,另外求教异常处理的分析,谢谢您看完了
|
评分
-
查看全部评分
|