好友
阅读权限10
听众
最后登录1970-1-1
|
Miko酱
发表于 2019-7-23 19:05
本帖最后由 Miko酱 于 2019-7-25 19:11 编辑
作为萌新,分享一下自己的入坑经验趴,大佬们勿喷。
当时是在学校参加CTF比赛,有几道逆向题,就感觉小东西,长的挺别致啊
。
从此就一发不可收拾了,第一次接触CrackMe就感觉很着迷,分析别人写好的程序,然后找到程序的流程,作者的思路,进一步攻破它,写出注册机,让我感到非常有成就感。破解的过程中也遇到各种各样的困难,没有见过的语言,没有遇到的校验过程,但是随着时间的推移,破解的越来越多,见过的小程序也越来越多,慢慢的曾经的难题也有了相应的解决方法,再次回头看一看刚开始没有能力分析的CM,也就不觉得那么无从下手了。经过这些练习,给我的帮助不仅仅是破解的熟练度提升,更重要的是使我更加有耐心去分析各种各样的程序,一步一步的剖析程序的代码,这对我以后的工作学习很有帮助。
这中间的进步离不开我老师的指导,他给我介绍了大致路线
- 先熟悉算法,推荐给我《图解密码技术》一书
- 然后分析别人的破解步骤,推荐给我《加密解密三》一书
- 其次自己尝试去写一个小程序来实践操作一下
- 最后结合Crack Me实战
我把老师给我介绍的书单 拿出来分享一下
图解密码技术,提取码 5jcv
加密与解密三,提取码 uh91
链接永久有效哦
至于写小程序嘛,唔,个人建议用C#写几个经典的图形界面就好廖。这样逆向起来会比较简单。
终于到了,最激动人心的时候辣,,素质三联(手动滑稽)Crack Me
这里分享一下别人已经整理好的Crack Me合集,Crack Me合集
对这160个Crack Me的分类如下:
- NAG:25、50、100-103、130、141、145
- KeyFile:32、34、47、76、91、96、99、139、155、156、157、160
- Name/Serial:1、2、3、4、6、7、9、13、19、21、23、24、26、28、29、33、39、40、44、45、49、54、62、64-71、73、75、78-85、93、97、106、109-111、116、122、125-128、136、137、140、143、147、148、154、158、159
- Serial:5、8、10、11、12、14、15、16、17、18、20、22、30、31、35、36、37、51、57、58、59、60、61、63、72、74、77、88、90、104、105、108、113、115、123、129、131、132、146、153
- CD-Check:27、134
- Matrix(多选框矩阵):48、114、149
- Time:142
==========================================================================华丽的分割线=====================================================================
干货来了!!!!!
Name\Serial:这种类型的一般是用Name进行一些运算,然后得到了Serial,接着Serial和自己输入的相比较。如果追码的话定位到程序最后比较处就可以了,如果写注册机的话就需要在程序取出Name的时候分析它的计算过程。
常用断点:GetWindowText、GetDlgItemText、SendMessage(编辑框句柄,WM_GETTEXT,长度,缓冲区地址)。
Nag:这种类型,无论是什么语言编写的,他最后总会调用windows API,可以从API断点入手,然后patch掉创建的窗口。
常用断点:MessageBox、CreateWindow、DialogBoxParam、CreateDialogParam
KeyFile:文件校验类型总会读文件,只有一条路走。
常用断点:CreateFile、ReadFile、GetFileSize
Serial:此类参考上边的Name\Serial类型,也是需要取出文本内容然后校验,简单的就是调用字符串比较函数,复杂的就是对Serial固定位或某几位运算求值,需要进行跟踪分析。
Cd_Check:这种会获取磁盘的类型,然后在进行校验,例如磁盘名、磁盘内文件。
常用断点:GetDriveType
Matrix:多选框矩阵类型的,有两种校验:1、每个多选框有对应的值,根据选中的多选框,获取每个多选框的值然后校验。2、将多选框当做按钮处理,点击后会触发按钮事件,符合后才会进行下次的校验,这种校验方法大多需要按顺序点击。
常用断点:IsDlgButtonChecked、按钮事件(不同语言按钮事件不同,通过反编译工具VB Decompiler、DeDe等查看)
各种程序破解思路:
VC程序:
1、CreateWindow创建的窗口,向上找RegisterClass注册窗口类,这个API中有窗口的回调函数。
2、DialogBoxParam创建的窗口,在参数中就有窗口回调函数。
找到窗口回调以后一般会有比较代码,例如与0x110、0x111,0x110是WM_INITDIALOG负责初始化操作,0x111是WM_COMMAND,COMMAND消息处理,程序的事件如按钮事件就在这里边。
VB程序:使用反编译工具查看反编译的代码或事件位置,我常用的工具:VB Decompiler、VBExplorer。
Delphi程序:也是使用反编译查看代码和事件,工具:DeDeDark。
MASM程序:如果没有加花指令的话这类型的是最简单了,没有编译器的附加代码,程序一目了然,又是上下浏览一下代码就能发现关键位置。因为也是调用的API,可以参考VC程序的思路。
前边一部分注册机大多用C++写的,后边一部分开始学了点Python,所以用的Python写注册机练手。
后边的破解大多用的x32dbg作为主要调试工具,顺便发一下我用的x32插件吧。
"XLCB" ctrl+G可输入API名直接跳到对应地址
"xAnalyzer" 显示API参数
"x64dbg_tol" x32的插件栏about有功能提示
"AutoCmdLine" 记住命令行 加载时自动填写
"AttachHelper" 自动恢复DbgBreakPoint DbgUiRemoteBreakin 反反附加
"CodeShot" x32的屏幕截图,保存在xx盘符:\文件名\** 目录
"APISearch" 选中API那一行右键有搜索方式,联网查看API手册
"Highlightfish" 可以改变x32的配色和字体颜色等等,比如我习惯用黑色背景。
这些插件在github上都有,自行下载就OK。x32插件 |
-
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|