1.PHP: Hypertext Preprocessor

面向对象:

  • 有一定语言学习基础,最好是面向对象语言
  • 对后端有一定的兴趣

学习准备:

  • 开发环境:XAMPP
  • 编译器:sublime text3

基础知识:

  • PHP介绍:PHP官网 PHP中文网
  • 计算机语言类型:编译型和解释型的区别

目标:

  • 了解PHP的特性,确立对PHP的兴趣
  • 能编写一个简单的PHP脚本

学习资源:

  • 书籍:细说PHP
  • 教程:W3school

开始:

php中的hello world
<?phpecho "hello world";
?>

什么是PHP?

  • 中文名:超文本预处理器,是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。

为什么PHP现在这么火?

  • 开源 免费性 快捷性 上手极快
  • 插件丰富,网上的解决方案有很多,而且还有庞大的开源社区可以提供帮助
  • 跨平台性强 效率高
  • 面向对象,性能很强 . 配合简单、稳定、容易部署,它能帮你低成本完成事情

安装:

  • XAMPP:直接点下一步就行,路径不要有中文和符号。安装完成后,xampp文件夹下的htdocs即为localhost本地服务器。
  • 注意:安装完成后,打开Apche和Mysql两个服务器,若提示Mysql打不开,很有可能是先前安装了Vmware虚拟机,占用了Mysql的端口,请自行百度然后解决。

开始你的学习:

  • 熟悉基本的语法
  • 现场练手

2.软件破解入门

面向对象:

  • 了解汇编语言
  • 对软件破解有一定的兴趣

学习准备:

  • ollydbg:已上传到群文件,请提前下载

试卷

  • 考生姓名:____
  • 考生学号:____

一、诗歌补写

  • 床前没月光,_
  • 春眠不觉晓,_

二、数学运算(在括号内填入数字)

  • 3 500 +400 * 3 / 2 + 1 = ( )
  • 4 ( 1 + 2) / 3 * 400 +500 = ( )

基础知识:

什么是壳?

  • 在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。

什么是加壳?

  • 其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么东东。软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。

什么是脱壳?

  • 完全破除压缩后软件无法编辑的限制,去掉头部的解压缩指令,然后解压出加壳前的完整软件。

目标:

  • 通过简单的介绍,了解软件破解的大致过程,了解破解的常用指令,并且在现场自己完成一个小程序的破解。

学习资源:

  • 论坛:吾爱破解

开始:

首先,先来了解一下我们的工具OllyDBG:

  • 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。
  • 寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。
  • 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
  • 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。
  • 堆栈窗口:显示当前线程的堆栈。

其次,我们还需要了解一点破解的常用命令

cmp a,b // 比较a与b
mov a,b // 把b值送给a值,使a=b
ret // 返回主程序
nop // 无作用,英文(no operation)简写,意思“do nothing”(机器码90)
call // 调用子程序,子程序以ret结尾
je或jz // 相等则跳(机器码是74或84)
jne或jnz // 不相等则跳(机器码是75或85)
jmp // 无条件跳(机器码是EB)
jb // 若小于则跳
ja // 若大于则跳
jg // 若大于则跳
jge // 若大于等于则跳
jl // 若小于则跳
pop xxx // xxx出栈
push xxx // xxx压栈

好了,这些已经够了,开始破解吧!

破解开始:

  1. 首先用OllyDbg打开我们的Acid burn.exe程序

    • -
  2. 然后,我们随便输入一下数字,会出现

    -
  3. 此时不要点击确定按钮,返回OD暂停(F12)。然后点击到堆栈窗口

    • 这里有两个MessageBox的地址,第一个地址为753FD84A这个地址明显太大,不在模块的领空,不是的。第二个地址为0042A1AE,和下面的Acid_bur地址非常接近,十有八九就是它了。
    • 右键显示调用, 在Call上面设置断点(F2)。
  4. 此时回到主窗口分析

    发现,没有跳转语句,逻辑很简单,在之上几行处就有retn,在头部push ebp下断点,然后按F9运行程序。此时点击确定,然后重新点击Check it baby 按钮,由于设置了断点,程序停止运行。在右下角堆栈处找到最近一条Return语句:

0012F974   0042FB37  返回到 Acid_bur.0042FB37 来自 Acid_bur.0042A170
  • 对着这条语句点击右键->反汇编跟随

0042FAD5 |. 68 C8FB4200 push 0042FBC8 ; UNICODE “-”
0042FADA |. FF75 F8 push [local.2]
0042FADD |. 8D45 F4 lea eax,[local.3]
0042FAE0 |. BA 05000000 mov edx,0x5
0042FAE5 |. E8 C23EFDFF call 004039AC
0042FAEA |. 8D55 F0 lea edx,[local.4]
0042FAED |. 8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
0042FAF3 |. E8 60AFFEFF call 0041AA58
0042FAF8 |. 8B55 F0 mov edx,[local.4]
0042FAFB |. 8B45 F4 mov eax,[local.3]
0042FAFE |. E8 F93EFDFF call 004039FC
0042FB03 75 1A jnz short 0042FB1F ; // 这个JNZ条件判断很关键?
0042FB05 |. 6A 00 push 0x0
0042FB07 |. B9 CCFB4200 mov ecx,0042FBCC
0042FB0C |. BA D8FB4200 mov edx,0042FBD8
0042FB11 |. A1 480A4300 mov eax,dword ptr ds:[0x430A48]
0042FB16 |. 8B00 mov eax,dword ptr ds:[eax]
0042FB18 |. E8 53A6FFFF call 0042A170
0042FB1D |. EB 18 jmp short 0042FB37 ; // 这个跳转是不是很可疑?
0042FB1F |> 6A 00 push 0x0
0042FB21 |. B9 74FB4200 mov ecx,0042FB74 ; ASCII 54,”ry Again!”
0042FB26 |. BA 80FB4200 mov edx,0042FB80 ; ASCII 53,”orry , The serial is incorect !”
0042FB2B |. A1 480A4300 mov eax,dword ptr ds:[0x430A48]
0042FB30 |. 8B00 mov eax,dword ptr ds:[eax]
0042FB32 |. E8 39A6FFFF call 0042A170 ; 这个CALL是导致跳转的语句
0042FB37 |> 33C0 xor eax,eax ; 返回到了这里

我们大概浏览下代码,最近部分有两个可疑跳转JNZ 和JMP, JNZ会通过它上面的call 004039FC 判断我们的伪码是否正确,判断的结果存在EAX中,如果EAX不等于就跳转到错误提示信息框那里。我们的目的是无论伪码是否正确都通过验证,所以最简单的办法就是将jnz这句使用NOP填充,我们尝试一下:选择JNZ这句,右键二进制->用NOP填充。回到原始程序,取消断点,再次点击Check it baby!

GOOD JOB!

PHP与软件破解导学相关推荐

  1. Xmind软件破解版: 思维导图,工程框架图,软件架构图

    https://blog.csdn.net/qq_16093323/article/details/80967867 Xmind 8 pro 软件破解版

  2. 软件破解系列之OD中断方法

    OD中断方法浅探 Ollydbg是一个新的32位的汇编层调试软件.适应于windows98.me.2000.xp和2003操作系统.由于他具有图形窗口界面,所以操作方便.直观,是cracker的好工具 ...

  3. OD调试9—实例:深入分析代码完成软件破解

    OD调试9-实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...

  4. python自动翻译导学案_变量python学案

    ●掌握常用的关系和逻辑运算符 ●掌握 Python 中的变量及其赋值 ●数字化学习与...●学生任务二: 阅读学案,计算一下表达式的值,把结果填在学习网站上. 练习算术...... 初中八年级信息技术 ...

  5. 计算机辅助技术学什么课,《CADCAM》课程导学计划

    原标题:<CADCAM>课程导学计划 CADCAM课程导学计划 课程的性质.目的及任务 CAD_CAM在AutoCAD基础上,进一步掌握三维CAD的建方法,并以此为切入点,转而学习并掌握常 ...

  6. 『中级篇』docker导学(一)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker导学(一) 这两年容器技术及其相关工具,平台异常火爆.在各大技术论坛或云计算峰会议题中,都会占很大比重, ...

  7. Xmind 8 pro 软件破解教程

    软件介绍 Xmind是一款非常专业的思维导图软件,收费好几百元,不过还是很多用户,因为目前用的最多,也简单易用.XMind界面友好.功能优秀.可用性极强,从而数百万人选择了它,XMind不仅可以绘制思 ...

  8. C++ STL轻松导学

    名称 C++ STL轻松导学 作者 晨光(Morning) 简介 本教程介绍有关学习C++ STL的预备知识和STL的相关背景知识,适合想对STL做大致了解的初学者. 声明 本教程版权为晨光(Morn ...

  9. 课程导学第一章计算机基础,计算机基础实践导学课程教案

    计算机基础实践导学课程教案 语音 编辑 锁定 讨论 上传视频 <计算机基础实践导学课程教案>是2011年9月23日清华大学出版社出版的图书,作者是付钪.李红豫. 书    名 计算机基础实 ...

最新文章

  1. java i o不会的地方_Java I/O 好复杂,傻傻分不清楚,别担心,我们有线索了。。。...
  2. 【51CTO学院三周年】我的职业生涯有贵人相助--小强老师
  3. 微软和谷歌分别开源分布式深度学习框架,各自厉害在哪?
  4. 程序员颈椎病康复秘籍
  5. 请先设置tkk_物联卡apn设置机型大全!!物联卡连不上4G、网速慢?推荐你看这片文...
  6. 达摩java_JAVA面向对象
  7. jQuery——clone()方法
  8. why I cannot set SAP UI5 dropdown list as not selected
  9. 怎样用mysql查询测试_如何测试数据库查询优化器
  10. SpringBoot中的定时任务的同步与异步
  11. WCF从理论到实践(10):异常处理 (转)
  12. Test2 unit2+3
  13. Mybatis缓存机制及mybatis的各个组成部分
  14. 如何去除list中的重复元素
  15. php中获取不到当前元素,PHP 中数组获取不到元素
  16. 出租车计费程序php,出租车计价器VHDL程序
  17. 什么是宝塔面板,跟服务器之间有什么特别联系?
  18. 伽卡他卡学生端 的卸载!!!
  19. 静态路由配置全面详解,静态路由快速入门指南
  20. 【camera】手机相机系统

热门文章

  1. SpringCloud Feign调用报错feign.RetryableException: too many bytes written executing
  2. linux 计划任务
  3. asp.net园林绿化服务交易网站
  4. 用continue计算100以内奇数和_如何提高小学生数学计算能力?
  5. 如何处理具有指数增长或衰减特征的数据
  6. CDH大数据平台 ipa: ERROR: Host ‘cdh-master-v02.yunes.com‘ does not have corresponding DNS A/AAAA record
  7. word保存为pdf文件
  8. 肆拾肆- 微信小程序 canvas 解锁及弹簧物理效应动画
  9. 6.3 马氏链-常返性(Durrett)答案
  10. 程序人生——CSAPP大作业