【交作业贴】吾爱破解培训第五课交作业专帖
前提介绍:《吾爱破解培训第五课:反击作者的挑衅--实战解除程序重启验证》 讲师:我是用户 http://www.52pojie.cn/thread-396068-1-1.html
回复内容包括解决问题步骤,最后的成品可以上传网盘贴地址,节省论坛空间就不要上传到论坛了。
作业截至到2015年8月17号00:00前提交算数,没有加报名群的同学也可以提交,后期会通过作业的提交情况,来淘汰没有交作业的,让交作业的新人加入。
对于作业的解答我已经更新到上面培训贴中,作业遇到问题的可以参考一下。
帖子我设置只有我可见,等一周后取消,切记不要回复和作业无关内容,否则会被扣分,前50个名交作业的同学有奖励。
作业要求:重启后出现彩蛋按钮表示注册成功
作业提交类型如下:
1.爆破(重启后出现彩蛋按钮)
2.追码(跟出正确注册码)(前三奖励50CB)--追码成功人数:1
3.彩蛋(不要求完全分析)(前三奖励100CB)
提交作业时请注明属于以上哪种类型
本帖最后由 奋仔 于 2015-8-15 17:02 编辑
爆破方式:
1.查找字符串,发现关键提示。
2.跟进字符串所在位置,将00402F4B位置nop掉,保存文件就可以咯。
3.彩蛋出现咯。
追码方式:
1. 52Pojie.txt:ITN3UXJGJ
Ctrl+N 找ReadFile,查找输入函数参考,找到比较注册码的算法。
2. 52Pojie.ini:jN2UXJxEjM2UXJ
Ctrl+N 找GetPrivateProfileString,查找输入函数参考,找到比较注册码的算法。
真实注册码(密):3A 1E 02 25 28 1A 48 15 3A 1D 02 25 28 1A
加0x30还原为真实注册码(明):6A 4E 32 55 58 4A 78 45 6A 4D 32 55 58 4A
3. HKEY_CURRENT_USER\Software\52Pojie:confirm3MjM2UXJ4abc
Ctrl+N 找RegQueryValueExA,查找输入函数参考,找到比较注册码的算法。
首先,倒推出真实注册码的长度为12。
然后,倒推出第5位为的值为0x32(0x66异或0x54)的结果,第9位是0x34,第1位是0x33
再然后,发现字符串比较,得出第2-4位为MJM,第6-8位为UXJ。
最后,发现长度不够,随便补了3位。
4.再打开程序就出现彩蛋提示。
!!!希望后续可以有视频讲解一下第五课例子和作业的彩蛋。
本帖最后由 _BaZzi 于 2015-8-11 11:57 编辑
1.txt
strcmp(code_txt,"ITN3UXJGJ")
ITN3UXJGJ
2.ini
3A 1E 02 25 28 1A 48 15 3A 1D 02 25 28 1A
+0x30
int main()
{
unsigned char code_ini = {0x3A, 0x1E, 0x02, 0x25, 0x28, 0x1A, 0x48, 0x15, 0x3A, 0x1D, 0x02, 0x25, 0x28, 0x1A};
unsigned char result;
result = '\0';
for(int i = 0; i < 14; i++)
result = code_ini + 0x30;
cout << result << endl;
system("pause");
return 0;
}
jN2UXJxEjM2UXJ
3.reg
code_reg-1 == code_reg
code_reg+2 == code_reg
code_reg^0x54 == 0x66
->
code_reg==0x32=='2'
code_reg==0x33=='3'
code_reg==0x34=='4'
strncmp(code_reg+1,"MjM",3)
strncmp(code_reg+5,"UXJ",3)
3MjM2UXJ4
发现一个不知道是bug还是故意的
code_reg长度为13 12 11 10 9都可以通过 只需要前9个字符满足条件就行了 本帖最后由 苏紫方璇 于 2015-8-11 12:00 编辑
追码
输入假码suzi-fangxuan-123456789
ITN3UXJGJ读取文件真码 suzi
ini原数+0x30 fangxuan
0012F33C6A 4E 32 55 58 4A 78 45 6A 4D 32 55 58 4A jN2UXJxEjM2UXJ
注册表
第一位-1=第五位
二三四位MjM
六七八位UXJ
第五位+2=第九位
第五位异或0x54=0x66 可得第五位为0x32=="2"
综上注册码是3MjM2UXJ4
最终注册码为ITN3UXJGJ-jN2UXJxEjM2UXJ-3MjM2UXJ4
本帖最后由 蚯蚓翔龙 于 2015-8-12 10:09 编辑
首先搜索字符串
双击注册成功进去
可以发现流程就是创建ini文件 txt这些来重启验证
然后重新载入进行爆破
下个api断点,当出现上述窗口时候返回用户代码
nop掉00402F4B 处,让其有彩蛋提示
00402F4B 90 nop
00402F4C 90 nop
00402F4D|.6A 00 push 0x0
00402F4F|.6A 00 push 0x0
00402F51|.68 DC455400 push 52PoJie?005445DC ;恭喜你发现彩蛋,这是一个解迷的彩蛋,请根据提示得到正解的注册码
00402F56|.E8 90790000 call 52PoJie?0040A8EB
00402F5B|.6A 01 push 0x1
F9..OK了
刚刚看了下,不知道追码出来的3人有了没
ITN3UXJGJtxt
jN2UXJxEjM2UXJ ini
3MjM2UXJ4 reg
@我是用户
本帖最后由 pnccm 于 2015-8-11 11:45 编辑
类型为一:爆破版正常流程:
一:首先查壳。无壳程序
二:运行程序看有无错误提示(结果是错误key无正确提示,而且错误key不会写入任何验证信息)
三:1.因不会找VC8的按钮事件,(只好从搜索字符串下手)。
2.也可以使用函数断点。不过自己测试没写入验证信息前函数断点(ReadFile和CreateFileA)这两个貌似都断不下来。只有一两个能断下。具体不太记得了。所以放弃函数断点使用搜索字符串
四:搜索后找到“恭喜你发现菜单这一句”双击这一句来到反汇编窗口
五:上图双击后来到这里,找到上面的jnz是跳过这个成功提示的。把jnz修改我nop后成功爆破上,修改后右键保存-OK
六:上图跳转nop掉后保存重新打开程序。出现成功界面
吾爱破解培训第五课作业_爆破版_pnccm
本帖最后由 niuniu919 于 2015-8-11 12:50 编辑
采用爆破的方式:
将我是彩蛋上方的跳转jnz改为nop
作业成品:http://pan.baidu.com/s/1pJqrBWv
第一段验证:重启前,判断是否有两个连接符号 “-”
有2个连接符号直接可以看到重启验证
把3段分别保存到txt ini 注册表里面
第一段重启验证,直接明码比较ITN3UXJGJ
第二段重启验证:一堆字符串的ASCII码加上0x30jN2UXJxEjM2UXJ
第三段重启验证:
第1个减1后和第5个要相等
第5个加2和第10个相等
第五个和0x54异或要等于66
正确的注册码:
ITN3UXJGJ-jN2UXJxEjM2UXJ-3MjM2UXJ4 1.OD载入查找字符串。
2.下读文件断点。
3.找出彩蛋的爆破点
爆破后第五课作业:http://pan.baidu.com/s/1pJ5QGNx
彩蛋正在查找。
爆破
我搜索字符串,发现52pojie.txt 52pojie.ini sofeware/52pojie
下ReadFile RegOpenKey断点
由于要出远门一趟,先爆破把作业交了,等回来了再追码试试
链接: http://pan.baidu.com/s/1o6rFA0y 密码: bzyu 老师说养成好习惯,从查壳开始
没壳
运行下软件,随意输入111111,点击后没反应
载入OD,中途有点小毛病,OD原来放在D盘是打不开入口点的,我在WIN8下做的,XP试过没问题,不清楚是不是我电脑问题
OD放在D盘WIN8打开的界面
OD放回C盘又正常了,搞不懂
右键,中文搜索引擎----智能搜索
CTRL+F查找 彩蛋
双击"恭喜你发现彩蛋,这是一个解迷的彩蛋,请根据提示得到正解的注册码"这一行进去
找到这一行
00402F4B /75 1B jnz short 吾爱破解.00402F68
把JNZ NOP掉
接着依次步骤复制到可执行文件所有修改复制然后鼠标右键保存到文件 大功告成。
到此第五课爆破作业就完成了,谢谢我是用户老师。