C-lang
435
1 分钟 short plus(short x,short y,short z,short m)
{
return x+y+z+m;
}
void main() //入口程序 程序开始执行的地方
{
//调用函数
plus(1,2,3,4);
return; //执行结束
}
找到plus函数的反汇编 理解每一行汇编代码 找到参数是如何传递 返回值是如何返回的
plus函数对应反汇编代码和意义
调用函数调用:
linux/工具
492
1 分钟 
安装 Transmission
sudo apt-get install transmission-daemon
修改配置文件
先停止transmission
sudo service transmission-daemon stop
编辑
sudo vim /etc/transmission-daemon/settings.json
第14行修改为“dht-enabled”: false,
第15行是下载目录修改成你自己的“download-dir”: “/home/transmission/downloads”,
第20行修改为“encryption”: 2,
第23行修改为 "incomplete-dir": "/home/transmission/tmp",
第49行修改自定义的密码“rpc-password”: “123456”,
第52行修改成自定义的登录账号名称“rpc-username”: “transmission”,
第54行修改为“rpc-whitelist-enabled”: false,
建立文件夹和修改权限
sudo mkdir -p /home/transmission/downloads
sudo mkdir -p /home/transmission/tmp
sudo usermod -a -G transmission root
sudo chgrp -R transmission /home/transmission
检查目录用户组
激活/工具
205
1 分钟 
VMware Fusion 10 Pro 序列号 导入虚拟机 以及下载地址
VMware Fusion 10 Mac 虚拟软件已于今年10月发布。新版的VMware Fusion 10 将兼容 macOS High Sierra,同时还支持最新 MacBook Pro 上的 Touch Bar。Fusion 10 还会改进图形性能和准确性,并采用苹果 Metal 技术。
python
1643
4 分钟 经常遇到这样的情况:
- 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性;
- 系统自带的 Python 是 2.x,自己需要 Python 3.x;
此时需要在系统中安装多个 Python,但又不能影响系统自带的 Python,即需要实现
Python 的多版本共存。pyenv 就是这样一个 Python 版本管理器。
汇编
376
1 分钟 数据宽度
因为计算机受硬件制约,数据都是有长度限制的(数据宽度),超过最多宽度的数据会被丢弃
计算机中常见的数据宽度:
- 位(BIT) -> 一个0或1
- 字节(BYTE) =8位 范围 0-> FF
- 字(Word) = 16位 0->FFFF
- 双字(DoubleWord) = 32位 0-FFFFFFFF
超过范围的数会被丢弃
工具
308
1 分钟 我的就没有。。。
我办理的联通的宽带,但是小区木有联通宽带 然后给弄的华数宽带
后来我发现华数宽带可以—多拨。。上下行都叠加
其他
131
1 分钟 
基础语法
跟C++差不多 懒得讲
常用函数和内置全局变量
抓取价格数据
Ask -- Double 当前K线(本货币)窗口买价
Bid -- Double 当前K线(本货币)窗口卖价
MarketInfo("GBPUSD",MODE_ASK) --Double 获取指定("GBPUSD")类型货币当前买价
MarketInfo("GBPUSD",MODE_BID) --Double 获取指定("GBPUSD")类型货币当前卖价
C-lang
193
1 分钟 void main(){
__asm
{
mov eax,eax
mov eax,eax
mov eax,eax
mov eax,eax
}
return;
}
int plus(int x,int y)
{
return 0;
}
--- C:\Project\2017_09_24\Main.cpp ------------------------------------------
1:
2: void main(){
0040D3F0 push ebp
0040D3F1 mov ebp,esp
0040D3F3 sub esp,40h
0040D3F6 push ebx
0040D3F7 push esi
0040D3F8 push edi
0040D3F9 lea edi,[ebp-40h]
0040D3FC mov ecx,10h
0040D401 mov eax,0CCCCCCCCh
0040D406 rep stos dword ptr [edi]
3: __asm
4: {
5: mov eax,eax
0040D408 mov eax,eax
6: mov eax,eax
0040D40A mov eax,eax
7: mov eax,eax
0040D40C mov eax,eax
8: mov eax,eax
0040D40E mov eax,eax
9: }
10: return;
11: }
0040D410 pop edi
0040D411 pop esi
0040D412 pop ebx
0040D413 add esp,40h
0040D416 cmp ebp,esp
0040D418 call __chkesp (0040d430)
0040D41D mov esp,ebp
0040D41F pop ebp
0040D420 ret
--- C:\Project\2017_09_24\Main.cpp ------------------------------------------
12:
13: int plus(int x,int y)
14: {
0040D470 push ebp
0040D471 mov ebp,esp
0040D473 sub esp,40h
0040D476 push ebx
0040D477 push esi
0040D478 push edi
0040D479 lea edi,[ebp-40h]
0040D47C mov ecx,10h
0040D481 mov eax,0CCCCCCCCh
0040D486 rep stos dword ptr [edi]
15: return 0;
0040D488 xor eax,eax
16: }
0040D48A pop edi
0040D48B pop esi
0040D48C pop ebx
0040D48D mov esp,ebp
0040D48F pop ebp
0040D490 ret
汇编
932
2 分钟 之前可以修改EIP寄存器的指令
JMP,CALL,RETN
所有JCC指令的动作->根据标志寄存器修改EIP的值
工具
1047
3 分钟 公司买了群辉nas服务器,用来备份数据和代码
之前的svn服务器用的windows,出现过数据丢失的问题,并且不够可靠。所以迁移到了nas的svn服务器
折腾了一下午,折腾出来几个方案
汇编
138
1 分钟 寄存器传参和堆栈传参
寄存器传参
MOV ECX,1
MOV EBX,2
CALL XX
MOV EAX,ECX
ADD EAX,EBX
RETN
堆栈传参 –ESP寻址
PUSH 1
PUSH 2
CALL XXX
MOV EAX,DWORD PTR SS:[ESP+8] //当内存中括号中包含ESP或者EBP的话 用SS
ADD EAX,DWORD PTR SS:[ESP+4]
RETN 8
堆栈传参 –EBP寻址
PUSH 1
PUSH 2
CALL XXX
PUSH EBP
MOV EBP,ESP
SUB ESP,10 //提升堆栈
MOV EAX,DWORD PTR SS:[EBP+8] //通过EBP获得参数 参数位置 +4
ADD EAX,DWPRD PTR SS:[EBP+0xC]
MOV ESP,EBP
POP EBP //恢复堆栈
汇编
437
1 分钟 什么是函数
函数就是一系列指令的几个
,为了完成某个会重复使用的特定功能
函数调用
- 用
JMP
来执行函数 - 用
CALL
来执行函数
函数的参数和返回值
通常情况下,会将函数的计算结果放到EAX寄存器中
汇编
281
1 分钟 EIP寄存器
EIP寄存器表示CPU下次执行的位置
JMP指令
JMP指令相当于给EIP寄存器赋值
JMP后面只能是32位的
汇编
331
1 分钟 什么是堆栈
程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要和操作系统申请内存
堆栈是程序的心脏,程序中需要用到的重要数据,都在堆栈中体现
汇编
1136
3 分钟 寄存器数量和容量有限,为了存储大量数据,所以我们需要内存
- 每个程序都会有自己的独立的4GB内存空间(
这里的内存其实是虚拟的,并不是真的给了程序4G内存,当程序读或者写这段内存的时候,操作系统才会把使用的内存映射到物理内存上
物理内存和内存条之间还有一层映射
汇编
877
2 分钟 标志寄存器 EFL
EFL是32位寄存器
其中的每一位,含义都是不同的
0x00000246 16进制
0000 0000 0000 0000 0000 0010 0100 0110 二进制
第十位(从下标开始算 从右往左):DF位
DF位为``的时候: MOVS 执行完毕之后 ESI和EDI的值会增加
DF位位1
的时候: MOVS 执行完毕之后 ESI和EDI的值会减少
汇编
488
1 分钟 1. MOV指令(赋值)
含义:前者被后者赋值
exp:
MOV EAX,0xFFFFFFFF
此时 EAX = 0xFFFFFFFF
指令格式:
- MOV r/m8,r8
- MOV r/m16,r16
- MOV r/m32,r32
- MOV r8,r/m8
- MOV r16,r/m16
- MOV r32,r/m/32
- MOV r8,imm8
- MOV r16,imm16
- MOV r32,imm32
r – 通用寄存器
m – 内存
imm – 立即数
r8 – 8位通用寄存器
m8 – 8位内存
imm8 – 8位立即数