Merge branch 'camera-2018:master' into master

This commit is contained in:
柏喵Sakura
2023-07-20 21:45:43 +08:00
committed by GitHub
38 changed files with 657 additions and 74 deletions

View File

@@ -11,17 +11,19 @@ jobs:
steps:
- name: checkout
uses: actions/checkout@master
- name: install dependencies
run: |
sudo pip install coscmd
sudo pip install tccli
npm i
uses: actions/checkout@v3
- name: install doc dependencies
run: sudo npm i
- name: build
run: |
npm run docs:build
- name: install coscmd and tccli
run: |
sudo pip3 install coscmd
sudo pip3 install tccli
- name: confirgure coscmd and tccli
env:
@@ -38,4 +40,4 @@ jobs:
- name: upload and refresh cdn
run: |
coscmd upload -rfs --delete ./.vitepress/dist/ /
tccli cdn PurgePathCache --cli-unfold-argument --Paths https://wiki.xyxsw.site/ --FlushType flush
tccli cdn PurgePathCache --cli-unfold-argument --Paths https://wiki.xyxsw.site/ --FlushType flush

40
.github/workflows/link-pr.yaml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: links when pr
on:
pull_request:
branches: [ master ]
paths:
- '**.md'
- '.lycheeignore'
jobs:
linkChecker:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: install doc dependencies
run: sudo npm i
- name: build
run: |
npm run docs:build
- name: Link Checker
uses: lycheeverse/lychee-action@v1.8.0
with:
fail: true
# For parameter description, see https://github.com/lycheeverse/lychee#commandline-parameters
# -E, --exclude-all-private Exclude all private IPs from checking.
# -i, --insecure Proceed for server connections considered insecure (invalid TLS)
# -n, --no-progress Do not show progress bar.
# -t, --timeout <timeout> Website timeout in seconds from connect to response finished [default:20]
# --max-concurrency <max-concurrency> Maximum number of concurrent network requests [default: 128]
# -a --accept <accept> Comma-separated list of accepted status codes for valid links
# .vitepress/dist the site directory to check
# *.md all markdown files in the root directory
args: -E -i -n -t 45 --max-concurrency 64 -a 401,403 -- '.vitepress/dist' '*.md'
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

45
.github/workflows/link-schedule.yaml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: links
on:
# repository_dispatch:
workflow_dispatch:
schedule:
- cron: "30 8 * * *"
jobs:
linkChecker:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: install doc dependencies
run: sudo npm i
- name: build
run: |
npm run docs:build
- name: Link Checker
uses: lycheeverse/lychee-action@v1.8.0
with:
# For parameter description, see https://github.com/lycheeverse/lychee#commandline-parameters
# -E, --exclude-all-private Exclude all private IPs from checking.
# -i, --insecure Proceed for server connections considered insecure (invalid TLS)
# -n, --no-progress Do not show progress bar.
# -t, --timeout <timeout> Website timeout in seconds from connect to response finished [default:20]
# --max-concurrency <max-concurrency> Maximum number of concurrent network requests [default: 128]
# -a --accept <accept> Comma-separated list of accepted status codes for valid links
# .vitepress/dist the site directory to check
# *.md all markdown files in the root directory
args: -E -i -n -t 45 --max-concurrency 64 -a 401,403 -- '.vitepress/dist' '*.md'
output: out.md
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Create Issue From File
uses: peter-evans/create-issue-from-file@v3
with:
title: Broken Link Detected
content-filepath: out.md
assignees: nightwhite

View File

@@ -27,10 +27,24 @@ jobs:
- name: Get PR labels
id: pr-labels
uses: joerick/pr-labels-action@v1.0.8
- name: Post
uses: dkershner6/post-api-call-action@v1
- name: Post Data
id: post-data
uses: octokit/request-action@v2.x
with:
url: "https://np4l5e.laf.run/pr"
data: "{\"id\": \"${{ github.event.pull_request.number }}\", \"labels\": \"${{ steps.pr-labels.outputs.labels }}\", \"files_updated\": \"${{ steps.changed-files.outputs.files_updated }}\", \"files_created\": \"${{ steps.changed-files.outputs.files_created }}\", \"files_deleted\": \"${{ steps.changed-files.outputs.files_deleted }}\",\"body\":\"${{github.event.pull_request.body}}\",\"title\":\"${{github.event.pull_request.title}}\",\"url\":\"${{github.event.pull_request.html_url}}\"}"
route: POST https://np4l5e.laf.run/pr
repo: ${{github.event.repository.full_name}}
title: ${{ github.event.pull_request.title }}
work_branch: ${{ steps.branch.outputs.work_branch }}
base_branch: ${{ steps.branch.outputs.base_branch }}
id: ${{ github.event.pull_request.number }}
labels: ${{ steps.pr-labels.outputs.labels }}
files_updated: ${{ steps.changed-files.outputs.files_updated }}
files_created: ${{ steps.changed-files.outputs.files_created }}
files_deleted: ${{ steps.changed-files.outputs.files_deleted }}
source_url: ${{ github.event.pull_request.html_url }}
content: |
|
${{ github.event.pull_request.body }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
node_modules
dist
cache
.temp
.temp
.vitepress/dist

7
.lycheeignore Normal file
View File

@@ -0,0 +1,7 @@
hdu-cs-wiki/edit
file://
https://adworld.xctf.org.cn/challenges/list
https://e5c78mnhgz.feishu.cn/docx/doxcnxBONvnxSLi0MfaNZWvrcSb
https://datawhale.feishu.cn/docs/doccn0AOicI3LJ8RwhY0cuDPSOc#
https://message.hdu-cs.wiki/
https://adworld.xctf.org.cn/

View File

@@ -2,6 +2,7 @@
import { withMermaid } from "vitepress-plugin-mermaid";
import mathjax3 from 'markdown-it-mathjax3';
import { main_sidebar, chapter2, chapter3, chapter4, chapter5, chapter6, chapter7, chapter8 } from './sidebar.js';
import { nav } from './nav.js';
import PanguPlugin from 'markdown-it-pangu'
const customElements = [
@@ -103,16 +104,7 @@ export default withMermaid({
head: [['script', { async: "async", src: 'https://umami.hdu-cs.wiki/script.js', "data-website-id": "3f11687a-faae-463a-b863-6127a8c28301", "data-domains": "wiki.xyxsw.site,hdu-cs.wiki" }]],
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: '首页', link: '/' },
{ text: 'Wiki史', link: '/wiki史' },
{
text: '友链', items:
[
{ text: '杭电导航', link: 'https://wiki.hduhelp.com' },
]
},
],
nav: nav(),
sidebar: {
'/': main_sidebar(),
@@ -124,6 +116,7 @@ export default withMermaid({
'/7.网络应用开发/': chapter7(),
'/8.基础学科/': chapter8(),
},
outline: [2, 6],
socialLinks: [
{ icon: 'github', link: 'https://github.com/camera-2018/hdu-cs-wiki' }
],

25
.vitepress/nav.js Normal file
View File

@@ -0,0 +1,25 @@
export function nav() {
return [
{ text: '首页', link: '/' },
{
text: '章节', items:
[
{ text: '1.杭电生存指南(最重要模块)', link: '/1.杭电生存指南/1.1人文社科的重要性(韩健夫老师寄语)' },
{ text: '2.高效学习', link: '/2.高效学习/2.高效学习' },
{ text: '3.编程思维体系构建', link: '/3.编程思维体系构建/3.编程思维体系构建' },
{ text: '4.人工智能', link: '/4.人工智能/4.人工智能' },
{ text: '5.富有生命的嵌入式', link: '/5.富有生命的嵌入式/5.富有生命的嵌入式' },
{ text: '6.计算机安全', link: '/6.计算机安全/6.计算机安全' },
{ text: '7.网络应用开发', link: '/7.网络应用开发/7.网络应用开发入门' },
{ text: '8.基础学科', link: '/8.基础学科/8.基础学科' },
]
},
{ text: 'Wiki史', link: '/wiki史' },
{
text: '友链', items:
[
{ text: '杭电导航', link: 'https://wiki.hduhelp.com' },
]
},
]
}

View File

@@ -4,6 +4,7 @@ import { h, watch } from 'vue'
import DefaultTheme from 'vitepress/theme-without-fonts'
import Download from '../../components/Download.vue'
import Bilibili from '../../components/Bilibili.vue'
import Parallax from '../../components/Parallax.vue'
import './style.css'
import './rainbow.css'
@@ -20,6 +21,7 @@ export default {
DefaultTheme.enhanceApp(ctx)
ctx.app.component('Download', Download)
ctx.app.component('Bilibili', Bilibili)
ctx.app.component('Parallax', Parallax)
if (typeof window === 'undefined')
return

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -36,6 +36,8 @@ author:wenjing
③ 在初高中参加竞赛的学生的数量和质量有极可能已经有所下降,因为竞赛相关政策的紧缩,稀烂的强基计划替代了对竞赛友好的自主招生,选择全力投身竞赛,拼搏省队的学生有所下降,有基础的学生现在也不见得很强。
UPD at 2023/7/19从长期来看这个结论应该是没有错的但是很可惜如果您是2023届的新生您将遭遇紧缩政策下一波不得不来hdu的竞赛高材生截至笔者更新为止已经有五位NOI银牌选手和两位具备NOI银牌能力的选手提前加入了集训队也许对于零基础的同学而言仍然只要和别的零基础同学竞争保底的三个席位就好了。但从长远来看进队不是结束抢夺比赛机会才是开始。而且如果hdu能抢到这样的生源其他学校的水平大概率也会上涨就算有了比赛机会也很难说会不会拿铜遗憾结尾。如果您出于好奇想了解这荒谬的景象是如何诞生请参阅电子书[《整型溢出》](https://zhuanlan.zhihu.com/p/117660874)
进队的学生零基础偏少,如果你选择这条路你可能需要克服不小的困难
# 我应该以什么态度学习 ACM

View File

@@ -24,7 +24,7 @@
安装过后点许可证 输上面的 key 激活
[https://mirror.nju.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso](https://mirror.nju.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso)
[https://mirror.nju.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.2-desktop-amd64.iso](https://mirror.nju.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.2-desktop-amd64.iso)
去这里下载 Ubuntu22.04 镜像包 iso

View File

@@ -627,7 +627,7 @@ AutoGPT 主要特性如下:
## 意识理论之于 AI全局工作空间理论
全局工作空间理论英语Global workspace theoryGWT是美国心理学家[伯纳德·巴尔斯](https://zh.wikipedia.org/w/index.php?title=%E4%BC%AF%E7%BA%B3%E5%BE%B7%C2%B7%E5%B7%B4%E5%B0%94%E6%96%AF&action=edit&redlink=1)提出的[意识](https://zh.wikipedia.org/wiki/%E6%84%8F%E8%AF%86)模型。该理论假设意识与一个全局的“广播系统”相关联,这个系统会在整个大脑中广播资讯。大脑中专属的智能处理器会按照惯常的方式自动处理资讯,这个时候不会形成[意识](https://zh.wikipedia.org/wiki/%E6%84%8F%E8%AF%86)。当人面对新的或者是与习惯性刺激不同的事物时,各种专属智能处理器会透过合作或竞争的方式,在全局工作空间中对新事物进行分析以获得最佳结果,而意识正是在这个过程中得以产生。
全局工作空间理论英语Global workspace theoryGWT是美国心理学家伯纳德·巴尔斯提出的[意识](https://zh.wikipedia.org/wiki/%E6%84%8F%E8%AF%86)模型。该理论假设意识与一个全局的“广播系统”相关联,这个系统会在整个大脑中广播资讯。大脑中专属的智能处理器会按照惯常的方式自动处理资讯,这个时候不会形成[意识](https://zh.wikipedia.org/wiki/%E6%84%8F%E8%AF%86)。当人面对新的或者是与习惯性刺激不同的事物时,各种专属智能处理器会透过合作或竞争的方式,在全局工作空间中对新事物进行分析以获得最佳结果,而意识正是在这个过程中得以产生。
这通常被认为是 神经科学家接受度最高的哲学理论

View File

@@ -53,12 +53,8 @@
尝试阅读以下内容
- [形象的机器学习简介](http://www.r2d3.us/visual-intro-to-machine-learning-part-1/)
- [一份温柔的机器学习指南](https://blog.monkeylearn.com/a-gentle-guide-to-machine-learning/)
- [为开发者准备的机器学习简介](http://blog.algorithmia.com/introduction-machine-learning-developers/)
- [菜鸟的机器学习基础](https://www.analyticsvidhya.com/blog/2015/06/machine-learning-basics/)
- [你如何向非计算机专业的人来解释机器学习与数据挖掘?](https://www.quora.com/How-do-you-explain-Machine-Learning-and-Data-Mining-to-non-Computer-Science-people)
- [在罩子下的机器学习,博文简单明了地介绍了机器学习的原理](https://georgemdallas.wordpress.com/2013/06/11/big-data-data-mining-and-machine-learning-under-the-hood/)
- [机器学习是什么?它是如何工作的呢?](https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A&index=1)
- [深度学习——一份非技术性的简介](http://www.slideshare.net/AlfredPong1/deep-learning-a-nontechnical-introduction-69385936)

View File

@@ -127,9 +127,9 @@ PyTorch 完全基于 Python。
如果你使用 conda 安装 pytorch 太慢或者失败,不妨换个下载源试试
[cmd](https://so.csdn.net/so/search?q=cmd&spm=1001.2101.3001.7020) 命令行中,输入添加以下命令:
在 cmd 命令行中,输入添加以下命令:
```
```bash
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

View File

@@ -10,8 +10,6 @@
[CNN 与 MLP 之间的关系,优缺点](https://www.editcode.net/archive/detail/89781)
[MLP(多层感知机)只是 CNN(卷积网络)的一个特例](https://blog.csdn.net/u010165147/article/details/82851717#:~:text=%E6%98%BE%E7%84%B6%E5%8F%AF%E4%BB%A5%E6%8E%A8%E5%AF%BC%E5%87%BA%EF%BC%8C%E5%BD%93%20CNN%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%A4%A7%E5%B0%8F%E4%B8%8E%E8%BE%93%E5%85%A5%E5%A4%A7%E5%B0%8F%E7%9B%B8%E5%90%8C%20%E6%97%B6%E5%85%B6%E8%AE%A1%E7%AE%97%E8%BF%87%E7%A8%8B%E7%AD%89%E4%BB%B7%E4%BA%8EMLP%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4MLP%E7%AD%89%E4%BB%B7%E4%BA%8E,%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%A4%A7%E5%B0%8F%E4%B8%8E%E6%AF%8F%E5%B1%82%E8%BE%93%E5%85%A5%E5%A4%A7%E5%B0%8F%E7%9B%B8%E5%90%8C%20%E7%9A%84CNN%EF%BC%88%E5%A6%82%E8%BE%93%E5%85%A5%E5%9B%BE%E7%89%87%E4%B8%BA100x100%EF%BC%8C%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%A4%A7%E5%B0%8F%E4%B8%BA100x100%EF%BC%89%EF%BC%8C%E6%89%80%E4%BB%A5MLP%E6%98%AFCNN%E7%9A%84%E4%B8%80%E4%B8%AA%E7%89%B9%E4%BE%8B%E3%80%82%20%E8%80%8C%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%A4%A7%E5%B0%8F%E4%B8%8E%E6%AF%8F%E5%B1%82%E8%BE%93%E5%85%A5%E5%A4%A7%E5%B0%8F%E7%9B%B8%E5%90%8C%E4%BC%9A%E7%9B%B4%E6%8E%A5%E4%B8%A2%E5%A4%B1%E9%9D%9E%E5%B8%B8%E5%A4%9A%E7%9A%84%E8%BE%93%E5%85%A5%E7%A9%BA%E9%97%B4%E4%BF%A1%E6%81%AF%EF%BC%8C%E6%89%80%E4%BB%A5MLP%E8%BF%99%E7%A7%8D%E8%BF%90%E8%A1%8C%E6%A8%A1%E5%BC%8F%E4%B8%8D%E9%80%82%E5%90%88%E5%9B%BE%E5%83%8F%E8%BF%99%E7%A7%8D%E7%A9%BA%E9%97%B4%E4%BF%A1%E6%81%AF%E4%B8%B0%E5%AF%8C%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82)
### 1.2
[深度理解感受野](https://blog.csdn.net/weixin_40756000/article/details/117264194)
@@ -53,9 +51,3 @@
### 3.2
[ResNet 残差、退化等细节解读](https://blog.csdn.net/a8039974/article/details/122380735)
## 思考 4
### 4.1
[U-Net 和 ResNet长短跳跃连接的重要性生物医学图像分割](https://www.jianshu.com/p/20a47427823c)

View File

@@ -19,7 +19,6 @@
具体其发展历程参考:
- [https://mp.weixin.qq.com/s/Mcikp99bsVgxAaykctmcAw](https://mp.weixin.qq.com/s/Mcikp99bsVgxAaykctmcAw) 知识图谱的前世今生
- [https://www.it610.com/article/1277333416756396032.htm](https://www.it610.com/article/1277333416756396032.htm) 知识图谱历史发展
在大致了解知识图谱的历史发展脉络后,我们或许对它有了一个初步的认知——一个由抽象符号构成的知识库,目的是为了让计算机理解人类的语义信息,打个不太恰当的比方,就是个计算机理解人类世界的大脑。

View File

@@ -4,7 +4,7 @@
Author 任浩帆
Email: yqykrhf@163.commailto:yqykrhf@163.com
Email: yqykrhf@163.com
术语介绍的补充Spy

View File

@@ -260,10 +260,4 @@ $$
# 参考资料
* [基于用户的协同过滤来构建推荐系统https://mp.weixin.qq.com/s/ZtnaQrVIpVOPJpqMdLWOcw](https://mp.weixin.qq.com/s/ZtnaQrVIpVOPJpqMdLWOcw)
* [协同过滤算法概述https://chenk.tech/posts/8ad63d9d.html](https://chenk.tech/posts/8ad63d9d.html)
* B站黑马推荐系统实战课程

View File

@@ -341,5 +341,4 @@ $$
# 参考资料
* [基于用户的协同过滤来构建推荐系统https://mp.weixin.qq.com/s/ZtnaQrVIpVOPJpqMdLWOcw](https://mp.weixin.qq.com/s/ZtnaQrVIpVOPJpqMdLWOcw)
* [协同过滤算法概述https://chenk.tech/posts/8ad63d9d.html](https://chenk.tech/posts/8ad63d9d.html)
* B站黑马推荐系统实战课程

View File

@@ -85,7 +85,7 @@ $$
Ok到这里平淡无奇 前向传播也大致上快说完了, 还差最后一步。 最后这一步就是做多分类问题然后求损失这就是training那边做的事情。 但是在详细说这个之前, 我想先简单回忆下word2vec里面的skip-gram Model 这个模型,如果回忆起来,这里理解起来就非常的简单了。
这里只需要看一张图即可, 这个来自cs231N公开课PPT 我之前整理w2v的时候用到的详细内容可看我[这篇博客](https://zhongqiang.blog.csdn.net/article/details/106948860) 这里的思想其实也是从w2v那边过来的。
这里只需要看一张图即可, 这个来自cs231N公开课PPT 我之前整理w2v的时候用到的这里的思想其实也是从w2v那边过来的。
<div align=center>
<img src="https://img-blog.csdnimg.cn/20200624193409649.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1emhvbmdxaWFuZw==,size_1,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述" style="zoom:70%;" />

View File

@@ -103,7 +103,7 @@ Word2vec包含两个模型**Skip-gram与CBOW**。下面,我们先讲**Skip-
我们滑动窗口再以banking为中心词
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片4.png"在这里插入图片描述" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片4.png" />
那么,如果我们在整个语料库上不断地滑动窗口,我们可以得到所有位置的$P(o|c)$,我们希望在所有位置上**最大化单词o在单词c周围出现了这一事实**,由极大似然法,可得:

View File

@@ -239,7 +239,7 @@ $$
### 编程实践
下面我们通过kaggle上的一个ctr预测的比赛来看一下GBDT+LR模型部分的编程实践 [数据来源](https://github.com/zhongqiangwu960812/AI-RecommenderSystem/tree/master/GBDT%2BLR/data)
下面我们通过kaggle上的一个ctr预测的比赛来看一下GBDT+LR模型部分的编程实践 [数据来源](https://github.com/zhongqiangwu960812/AI-RecommenderSystem/tree/master/Rank/GBDT%2BLR/data)
我们回顾一下上面的模型架构, 首先是要训练GBDT模型 GBDT的实现一般可以使用xgboost 或者lightgbm。训练完了GBDT模型之后 我们需要预测出每个样本落在了哪棵树上的哪个节点上, 然后通过one-hot就会得到一些新的离散特征 这和原来的特征进行合并组成新的数据集, 然后作为逻辑回归的输入,最后通过逻辑回归模型得到结果。

View File

@@ -151,6 +151,6 @@ def DeepFM(linear_feature_columns, dnn_feature_columns):
**参考资料**
- [论文原文](https://arxiv.org/pdf/1703.04247.pdf)
- [deepctr](https://github.com/shenweichen/DeepCTR)
- [FM](https://github.com/datawhalechina/team-learning-rs/blob/master/RecommendationSystemFundamentals/04%20FM.md)
- [FM](https://github.com/datawhalechina/fun-rec/blob/master/docs/ch02/ch2.1/ch2.1.2/FM.md)
- [推荐系统遇上深度学习(三)--DeepFM模型理论和实践](https://www.jianshu.com/p/6f1c2643d31b)
- [FM算法公式推导](https://blog.csdn.net/qq_32486393/article/details/103498519)

View File

@@ -1,12 +1,302 @@
# 基础工具的使用
# IDA pro
IDA pro (交互式反编译器专业版)是二进制安全研究人员必备的反汇编、反编译工具,功能繁多而强大,反编译结果清晰明了。
## 安装
IDA pro 是收费软件,价格极其昂贵,一套完全版人民币 10W 左右因此可以到各大网站下载破解版注意到一些知名网站下载比如吾爱破解等防止下载的软件包含病毒。在编写此文时IDA pro 更新到了 8.3,网上能找到的最新的版本为 7.7。本文由于版权原因,不提供下载链接。
IDA pro 是收费软件价格极其昂贵一般人买不起因此可以到各大网站下载破解版注意到一些知名网站下载比如吾爱破解等防止下载的软件包含病毒。在编写此文时IDA pro 更新到了 8.0,网上能找到的最新的版本为 7.7。本文由于版权原因,不提供下载链接。
# 简易使用方法
> 本文档仅作快速入门,更加细节的内容还请读者查阅其他资料以及多加实践。
>
> 另外在任何使用上操作的问题,都可以在群里提问!
## 0x00 IDA 简单介绍
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809113855166.png)
IDA是一款交互式反汇编和反编译工具其支持文件类型和文件平台丰富。
可静态分析也可动态调试,可以说是二进制手的吃饭工具了
## 0x01 启动界面
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809114834244.png)
```
NEW打开IDA同时弹出对话框选择要打开的文件
Go单独打开ida打开界面将文件拖入
Previous或者下面的列表项快速打开之前的的文件
```
这里选择Go键打开以后将文件拖入
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809124156697.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809124408179.png)
这里按我们的默认选项点击OK即可
## 0x02 关闭界面
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809125554853.png)
```
第一个选项:就是不打包数据包文件,那么这些数据库文件就会分开这放。
第二个选项及图中选项就是把这几个数据库文件打包为1个(如.i64文件),下次打开我们分析的文件的时候,打开这个文件即可。
第三个选项:不会删掉数据库文件,而是打包压缩到存储的文件里面去了。
下面两个选项
第一个选项:回收垃圾,如果打包文件太大了,可以选用这个选项,清理不必要的内存
最后一个选项:当分析时候写错了,选中最后一个,最后一次打开的操作不保留了。(解决错误操作)
```
## 0x03 主界面- IDA View&Pseudocode
反汇编代码的图表窗口
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809130857159.png)
按**空格键**切换成文本结构的反汇编
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809130940294.png)
按**F5**进行反编译跳转至`Pseudocode`(伪代码)界面
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809131038284.png)
然后就可以分析代码逻辑了
直接点击函数名可以进入到对应函数内部查看函数逻辑
## 0x04 主界面- Hex View
十六进制窗口(不太常用)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809132027773.png)
## 0x05 主界面-Structures
结构体窗口
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809132130778.png)
## 0x06 主界面-Enums
枚举类型界面
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809132242739.png)
## 0x07 主界面-Imports
导入表
可以查看当前模块用了哪些模块的哪些函数
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809132327043.png)
## 0x08 主界面-Exports
导出表
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809151050575.png)
## 0x09 主界面-Strings
`Shift+F12`转到`String`界面,该操作会搜索程序中的字符串数据并展示
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809153126737.png)
`Ctrl+F`后输入想要检索的字符可以快速搜索字符串
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809153408536.png)
## 0x0a 其他界面-Functions
罗列了程序中用到的所有函数,包括底层调用的库的函数
其中一般来说`main`是程序的主要函数
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809151328885.png)
## 0x0b 其他界面-Output
程序的输出信息都会展示在这里
其中包括插件的加载信息、插件/脚本运行时的输出等
另外还可以直接在下面输入python语句方便在ida使用过程中简单的数据处理
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809151536894.png)
## 0x0c 其他界面-导航栏
一个二进制文件包括不同的区块,这里显示程序的不同类型数据,不同的颜色代表二进制文件中不同的块
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809151815243.png)
## 0x0d 常用快捷键
> 边用边记,多打打就会记住了!
>
> 只记录了部分
- `;` 为当前指令添加注释
- `/` 在伪代码中添加注释
- `g` 跳转到任意地址
- `Esc` 返回到跳转前的位置
- `n` 定义或修改名称,常用来修改函数和变量的名字
- `A` 按照ASCII显示数据
- `D` 分别按字节、字、双字来显示数据
- `F5`反编译汇编代码得到C伪代码
- `Shift+F12` 搜索程序中的字符串
- `Alt+t` 搜索程序中的指令
- `Ctrl+x` 查看变量和函数的引用
- `Y` 修改变量/函数类型
- `F2`快速下断点
## 0x0e 常用插件
> 具体安装和使用不在此展开了
- [Find Crypt](https://github.com/polymorf/findcrypt-yara) -- 寻找常用加密算法中的常数(需要安装 [yara-python](https://github.com/VirusTotal/yara-python)
- [Keypatch](https://github.com/keystone-engine/keypatch) -- 基于 Keystone 的 Patch 二进制文件插件
- [LazyIDA: Make your IDA Lazy! ](https://github.com/P4nda0s/LazyIDA) -- 快速Dump内存数据
- [Finger](https://github.com/aliyunav/Finger) -- 函数签名识别插件
- [D810](https://gitlab.com/eshard/d810) -- 去混淆插件
## 0x10 IDA Python
IDA 提供可与其交互的IDA Python接口可以使用Python做很多的辅助操作
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809154742462.png)
可以参考这篇文章了解常用的接口
[IDA Python 常用函数 | 4nsw3r's Blog](https://4nsw3r.top/2022/02/11/IDA%20Python%20%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0/)
## 0x11 IDA 动态调试
> 暂时只对Windows和Linux下的文件调试做介绍Mac和Android下的文件调试有待读者后续探索
### 调试Windows下的文件
可以先在汇编代码或伪代码界面下断点,然后`F9`选择调试器,这里直接选`Local Windows Debugger`
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809160044665.png)
之后就可以用F7(单步不跳过执行)/F8(单步跳过执行)/F9(继续执行,遇到断点停止)进行调试
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809163138453.png)
### 调试Linux下的文件
可以先在汇编代码或伪代码界面下断点
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809155352920.png)
由于Linux下文件调试比较特殊需要远程起一个服务器运行服务端这里可以使用**Vmware**或者**WSL2(Windows subsystem Linux)**进行调试
因篇幅有限,在这里直接贴篇链接供大家学习并选择调试方式
- Vmware 调试 [IDA动态调试ELF](https://bbs.pediy.com/thread-247830.htm)
- WSL 调试 安装好WSL直接运行ida dbgsrv目录下linux_server文件即可以
后面是一样的调试步骤
## 0x12 一个简单程序的分析
#### 源代码
```c
#include <stdio.h>
#include <string.h>
void change(char* str) {
for (int i = 0; i < strlen(str) ; i++) {
str[i] = str[i] - 1;
}
}
int check(char* str){
return strcmp(str, "ek`fzHC@^0r^m/s^b/lo0dw2c|") == 0;
}
int main() {
char input[100];
scanf("%100s", input);
change(input);
if (check(input)) {
printf("You are right\n");
}
else {
printf("You are wrong\n");
}
}
```
#### 分析历程
##### 将程序拖入IDA
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809173439491.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809173548998.png)
##### F5分析查看伪代码
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809173627488.png)
发现有`change``check`的自定义函数
`n`修改一下变量名
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174001600.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174015603.png)
分别进入里面查看函数逻辑
##### 查看函数逻辑
change函数
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174035800.png)
check函数
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174058831.png)
###### 静态分析逻辑
change函数是对输入字符串的每一个字节进行修改
然后在check函数进行比较
###### 动态分析逻辑
在change函数进入前下好断点
随意的进行一些输入
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174913326.png)
然后断下来
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809174957987.png)
F7进入函数进行单步不跳过调试
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809175413448.png)
遇到类似`strlen`等库函数可以F8单步调试跳过
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/image-20220809175459668.png)
可以发现输入字符串的每一个字节的Ascii值都减小了1
##### 脚本编写
试试写一个脚本解出这道题吧!
## 简易使用方法
待更新~

View File

@@ -41,7 +41,7 @@ ESP 定律的原理在于利用程序中堆栈平衡来快速找到 OEP.
#### 示例
示例程序可以点击此处下载: [2_esp.zip](https://github.com/ctf-wiki/ctf-challenges/blob/master/reverse/unpack/example/2_esp.zip)
示例程序可以点击此处下载: [2_esp.zip](https://github.com/ctf-wiki/ctf-challenges/blob/master/reverse/unpack/2_esp.zip)
还是上一篇的示例, 入口一句 `pushad`, 我们按下 F8 执行 `pushad` 保存寄存器状态, 我们可以在右边的寄存器窗口里发现 `ESP` 寄存器的值变为了红色, 也即值发生了改变.

View File

@@ -13,7 +13,7 @@ reverse 主要研究软件破解,软件加固,计算机病毒等。
## 入门材料
> HGAME Mini 2022 Reverse Pwn 入门材料
> Reverse:https://www.notion.so/b92ca2bfaacf4e7c873882dff9dbf649
> Pwn:https://ek1ng.oss-cn-hangzhou.aliyuncs.com/HGAME%20Mini%202022%20Pwn%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97.pdf
> Pwn:[PWN入门指北](https://ek1ng.oss-cn-hangzhou.aliyuncs.com/HGAME%20Mini%202022%20Pwn%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97.pdf)
## 学习二进制安全需要具备哪些基础?

View File

@@ -14,8 +14,6 @@
[MDN Web 入门](https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web)
[ A friendly web development tutorial for complete beginners](https://www.internetingishard.com/html-and-css/)
[前端入门必会的初级调试技巧](https://zhuanlan.zhihu.com/p/145466139)
#### JavaScript

View File

@@ -0,0 +1,6 @@
# 9.计算机网络
计算机网络的定义:
利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。
而我们学习计算机网络本质上可以理解为学习这个网络系统中的各种网络协议。

View File

@@ -51,11 +51,9 @@
zzm 花费了一年的时间动员了大伙对讲义进行修缮和完备不得不说这确实不是一个小的工作不过在2023年3月在计院领导的支持下计算机学院科协成立了。我们将在学院的支持下继续完善这个内容同时也欢迎大伙加入我们共同参与到讲义的学习与撰写中来
<div align="center">
<img src="https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/hdu-cs-qq.jpg">
<img src="https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/qrcodes.png">
</div>
<p align="center">欢迎加群669895692</p>
## 学习原则
1. 建议保持至少一半时间在实操,一半时间在学理论知识,比例未必正确的,但是强调实操和反馈的重要性,如果你上来就拿一本经典的花书看,只看理论或者上来就整一段开源代码,势必会陷入不同程度的盲目和困苦当中。

179
components/Parallax.vue Normal file
View File

@@ -0,0 +1,179 @@
<script setup lang="ts">
import { computed, reactive, ref } from 'vue'
import type { CSSProperties } from 'vue'
import { useMounted, useParallax } from '@vueuse/core'
const target = ref(null)
const parallax = reactive(useParallax(target))
const targetStyle: CSSProperties = {
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
userSelect: 'none',
transition: '.3s ease-out all',
}
const cardWindowStyle: CSSProperties = {
overflow: 'hidden',
fontSize: '6rem',
position: 'absolute',
top: 'calc(50% - 1em)',
left: 'calc(50% - 1em)',
height: '2em',
width: '2em',
margin: 'auto',
}
const layerBase: CSSProperties = {
position: 'absolute',
userSelect: 'none',
"-webkit-user-drag": "none",
height: '100%',
width: '100%',
transition: '.3s ease-out all',
}
const containerStyle: CSSProperties = {
margin: '3em auto',
perspective: '300px',
}
const layer0 = computed(() => ({
...layerBase,
content:'url(https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/hdu-cs-wiki_main.png)',
transform: `translateX(${parallax.tilt * 10}px) translateY(${parallax.roll * 10
}px) scale(1)`,
}))
const layer1 = computed(() => ({
content:'url(https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/sparkles.gif)',
userSelect: 'none',
"-webkit-user-drag": "none",
transform: `translateX(${parallax.tilt * 20}px) translateY(${parallax.roll * 20
}px) scale(1.33)`,
'background-blend-mode': 'overlay',
filter: 'brightness(1) contrast(1)',
'mix-blend-mode': 'color-dodge',
opacity: '1',
position: 'absolute',
}))
const layer2 = computed(() => ({
transform: `translateX(${parallax.tilt * 30}px) translateY(${parallax.roll * 30
}px) scale(1.33)`,
'background-image': 'linear-gradient(115deg,transparent 0%,#ec9bb6 25%,transparent 47%,transparent 53%,#ccac6f 75%,transparent 100%)',
opacity: '.18',
filter: 'brightness(.5) contrast(1)',
width: '100%',
height: '100%',
position: 'absolute',
}))
const layer3 = computed(() => ({
...layerBase,
transform: `translateX(${parallax.tilt * 40}px) translateY(${parallax.roll * 40
}px) scale(1.33)`,
}))
const layer4 = layerBase
const cardStyle = computed(() => ({
background: '',
height: '14rem',
width: '20rem',
borderRadius: '20px',
border: '1px solid #000000',
overflow: 'hidden',
transition: '.3s ease-out all',
boxShadow: '-20px -20px 30px -25px #11e8da, 20px 20px 30px -25px #1ea5e6, -7px -7px 10px -5px #11e8da, 7px 7px 10px -5px #1ea5e6, 0 0 13px 4px rgba(255,255,255,0.3),0 55px 35px -20px rgba(0, 0, 0, 0.5)',
transform: `rotateX(${parallax.roll * 20}deg) rotateY(${parallax.tilt * 20
}deg)`,
}))
</script>
<script lang="ts">
export default {
inheritAttrs: false
}
</script>
<template>
<div>
<div ref="target" :style="targetStyle">
<div :style="containerStyle">
<div :style="cardStyle">
<div id="kirakira"></div>
<div :style="layer2"></div>
<img :style="layer1"
class="image">
<div :style="cardWindowStyle">
<img :style="layer0" class="image">
</div>
</div>
</div>
</div>
</div>
</template>
<style>
#kirakira {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 1;
transition: .3s ease-out;
}
#kirakira:hover {
background-image: linear-gradient(110deg,
transparent 25%,
#ec9bb6 48%,
#ccac6f 52%,
transparent 75%);
background-position: 50% 50%;
background-size: 250% 250%;
opacity: .18;
filter: brightness(.66) contrast(1.33);
transition: none;
background-repeat: no-repeat;
mix-blend-mode: color-dodge;
transition: all .33s ease;
animation: holoGradient 12s ease 0s 1,
}
@keyframes holoGradient {
0%,
100% {
opacity: 0.3;
background-position: 50% 50%;
filter: brightness(.5) contrast(1);
}
5%,
9% {
background-position: 100% 100%;
opacity: 0.1;
filter: brightness(.75) contrast(1.25);
}
13%,
17% {
background-position: 0% 0%;
opacity: .18;
}
35%,
39% {
background-position: 100% 100%;
opacity: 0.2;
filter: brightness(.5) contrast(1);
}
55% {
background-position: 0% 0%;
opacity: 0.3;
filter: brightness(.75) contrast(1.25);
}
}</style>

View File

@@ -5,7 +5,7 @@ import { members } from './members.ts'
</script>
# 贡献者名单
<Parallax/>
以下为对本项目做出贡献的人员名单,排名不分先后。
<VPTeamMembers size="small" :members="members" />

View File

@@ -28,4 +28,4 @@ features:
details: 还有非常多的内容尚未更新完毕,我们期待着你的反馈和加入!
---
<meta name="baidu-site-verification" content="codeva-GDehy1VQ6d" />
<meta name="baidu-site-verification" content="codeva-GDehy1VQ6d" />

BIN
public/cn.hdu-cs.wiki_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
public/hdu-cs-wiki_main.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
public/qrcodes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
public/sparkles.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -1,4 +1,5 @@
# HDU计算机科学讲义
<Parallax />
## 序言
相信看到这个wiki的同学都对计算机专业有着或多或少的期待或许有人因小时候某次电视上的黑客操作所振奋或许有人是被全民编程的时代浪潮席卷而来渴望着高薪的工作或者又有人因为渴望着用编程改变世界。
@@ -13,7 +14,7 @@
学长学姐们深知其中痛楚,在我们踩了一个个坑后,我们决定:
**出一份计算机科学领域的讲义,一起做大家的领路人。**
**出一份计算机科学领域的讲义,一起做大家的领路人。**
## 救赎之路?
@@ -30,15 +31,14 @@
想必在这里,你或多或少都能得到自己的答案!
<div align="center">
<img src="https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/hdu-cs-qq.jpg"/>
<img src="https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/qrcodes.png"/>
</div>
欢迎加群与学长交流!我们也可以针对你的喜好为你定制一个方案!
**群号669895692**
::: tip 🤔
#### **为什么我要花大量的时间与折磨受这样的训练?**
### 为什么我要花大量的时间与折磨受这样的训练?
因为你来大学的主要目的,就是进行学习,而学校的传授的内容往往是不能满足成为一个合格的 CSer 的全部需求的。
@@ -49,6 +49,7 @@
教育除了知识的记忆之外, 更本质的是能力的训练, 即所谓的 training。 而但凡 training 就必须克服一定的难度, 否则你就是在做重复劳动, 能力也不会有改变。 如果遇到难度就选择退缩, 或者让别人来替你克服本该由你自己克服的难度, 等于是自动放弃了获得 training 的机会, 而这其实是大学专业教育最宝贵的部分。 —— etone
:::
## 学习原则
1. 建议保持至少一半时间在实操,一半时间在学理论知识,比例未必正确的,但是强调实操和反馈的重要性,如果你上来就拿一本经典的花书看,只看理论或者上来就整一段开源代码,势必会陷入不同程度的盲目和困苦当中。