实验内容及步骤
(一)使用JDK编译、运行简单的java程序
使用vim编辑器编写代码
编译,运行
(二)使用IDEA进行调试
我们先新建一个项目 名字叫HelloJDB
,点击finish
就好了
常用的快捷键
用鼠标在「src」上点击右键,选择「New」->「Java Class」新建Java类:
我们新建一个HelloJDB
类
输入代码
编译运行,没有问题,我们在第五行下一个断点,鼠标单击或者使用Ctrl+F8
快捷键
然后单击菜单「Run」->「Debug...」(或使用Alt+Shift+F9
快捷键)开始调试Java程序,程序停留在了第5行
此时第五行的代码并没有执行,我们使用单步运行让程序运行到第6行,单步运行有两种:Step Into(快捷捷F7)和Step Over(快捷捷F8)这里和我之前破解外挂用的OD一样,在执行方法调用语句时,Step Into
会跳入方法实现,Step Over
会直接执行完方法
按下Step Over
或F8,可以发现程序停在了第5行,这时查看变量i的值,会看到sum等于11
设置条件断点
在第9行左边断点处单击鼠标右键,弹出断点属性框,设置条件i==56
按一下F9,可以看到i=56
设置临时断点
右键断点,点击More或者按Ctrl+Shift+F8
打开断点设置窗口,选中「Remove Once hit」
(三)练习:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)
程序代码如下:
import java.io.*;
import java.util.Scanner;
public class Caeser {
public static void main(String[] args) {
System.out.print("请输入密钥:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
C(a);
}
public static void C(int n) {
try {
char b[];
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一段明文:");
String str2 = br2.readLine();
b = str2.toCharArray();
System.out.println("密文为:");
int k = n;
for (int i = 0; i < str2.length(); i++) {
char ch = (char) ((b[i] - 'a' + k) % 26 + 'a');
System.out.print(ch);
}
System.out.println("密钥K=" + k);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
正常情况
边界情况
实验总结
这一段因为有事情也没有上课,很多东西都还在学习过程中,这篇博客做得不好的地方我会改正,慢慢来吧。