1.0.0 Summary

Tittle:【Assembly】-NO.88.Assembly.2.滴水逆向.1.002-【】-

Style:Java

Series:Log4j

Since:2018-02-09

End:2018-02-09

Total Hours:30+

Degree Of Diffculty:5

Degree Of Mastery:5

Practical Level:5

Desired Goal:5

Archieve Goal:3

Gerneral Evaluation:3

Writer:kingdelee

Related Links:

http://www.cnblogs.com/kingdelee/

1.进制的理解

3进制:

7进制:

2.进制的转换

2.1

 

八进制 +-*/
1.加法----------------------------------
277
+ 333
-----------------
7+3:12 ------进1,留2
-----------------
7+3+1:13 ------加上前一个进1计算,仍旧进1,留3
-----------------
2+3+1:6 ------留6
-----------------
632 ------以上留位拼接 2.减法----------------------------------
236
- 54
-----------------
6-4:2 ------留2
-----------------
3-5:6 ------借1位,即3+8=11,11-5=6,留6
-----------------
2-1:1 ------被借1,即2-1=1.
-----------------
162 ------结果 3.乘法----------------------------------
276
* 54
-----------------
6*4=30 ------6+6=14+6=22+6=30,进3留0; 另一种算法:10:6*4=24, 24/8=3, 24+(24/8)*(10-8)=30;6+6=14+6=22+6=30
-----------------
4*7+3=37 ------7+7=16+7=25+7=34,34+3=37,进3留7
-----------------
4*2+3=15 ------4+4=10,10+3=13, 进1留3
-----------------
1370 到276*5了;
-----------------
6*5=36 -------6+6=14+6=22+6=30+6=36
-----------------
7*5+3=46 -------7+7=16+7=25+7=34+7=43,43+3=46
-----------------
5*2+4=16 -------5+5=12+4=16
-----------------
1666 1370
+ 1666
-----------------
0
-----------------
6+7=15
-----------------
3+6+1=12
-----------------
1+6+1=10
-----------------
1+1=2
-----------------
20250 4.除法----------------------------------
234
/ 4
-----------------
反推:4+4=10+4=14+4=20, x=20<23<20+4=24,所以 得4余3
-----------------
反推:20+4=24+4=30+4=34 所以,得7整除
-----------------
47
-----------------

  

3.16进制是2进制的简写形式

从0写到1111

EE,BE,96即

1111 1111,1011 1111, 1001 0110

4.计算机宽度

5.无符号数

6.有符号数

有符号数,为正数时,和无符号数规则一样

为负数时,

假设数据宽度为1 byte(8 bit)

假设数据宽度为 Doubleword(32Bit)

计算机是通过位运算实现 所有计算

4+5 的运算过程 -----------------------------	

		0000 0100
0000 0101
+ ---------
0000 1001 ----------------------------- 1)先得到异或结果,临时性的
0000 0100 ---------# 1.1
0000 0101 ---------# 1.2
异或 ---------
0000 0001 ---------# 1.3 2)再通过与运算 判断是否有进位
如果没有进位的情况下,异或的结果与加的结果一样
如果有进位,拿异或的结果与与的结果继续 异或 0000 0100
0000 0101
与 ---------
0000 0100 ---------# 1.4 有1应进位:
0000 1000 ---------#1.4 -> #1.5 结果 存在1不全是0,说明有进位
拿此结果与异或的结果相加 3)继续异或
拿异或的结果和与的结果 继续异或 0000 0001 --------- $ 1.3
0000 1000 --------- $ 1.5
异或 ---------
0000 1001 4) 判断3)的与 是否有进位 0000 0001 --------- $ 1.3
0000 1000 --------- $ 1.5
与 ---------
0000 0000 结果 全是0,没有进位。
则异或的结果就是按位加的最终结果 4-5 的运算过程 ----------------------------- 即 4+(-5) -5:
原码:1000 0101
反码:1111 1010
补码:1111 1011
用补码进行计算 1) 0000 0100
1111 1011
异或 ---------
1111 1111 2)
0000 0100
1111 1011
与 ---------
0000 0000 没有进位,异或的结果就是按位加的结果 即 4+(-5) 结果 16进制:FF,10进制 -1, 2进制:1111 1111
----------------------------- x*y 乘法的本质 就是y个x相加
x/y 除法的本质 就是x能减去?个y -------------------------------------------------------------------

  

ollydbg:

反汇编窗口-寄存器

内存窗口-堆栈

--------------------------------------------------------------

寄存器

mov 指令

mov eax,1

mov ebx,1

1.立即数到内存

mov byte ptr ds:[内存地址], 1

mov指令:
1.立即数到内存
2.寄存器到内存
3.内存到寄存器 1.立即数到内存
mov byte ptr ds : [0019FF99], 0x12
mov word ptr ds : [0019FF99], 0x1234
mov dword ptr ds : [0019FF99], 0x12345678 2.寄存器到内存
mov dword ptr ds : [0019FF99], EAX
mov word ptr ds : [0019FF99], AX
mov byte ptr ds : [0019FF99], AL 3.内存到寄存器
mov eax, dword ptr ds : [0019FF99] tip:每个编号对应的是一个字节 读取内存的值
mov eax, dword ptr ds: [0019FF99] 向内存中写入数据
mov dword ptr ds:[0019FF99], eax 内存地址的5种表示形式:
1. [0x13FFC4]
2. [EAX]
mov dword ptr ds : [EAX], 0x12345678
3. [reg + 立即数]
读取内存的值:
mov ecx, 0x13FFD0
mov eax, dword ptr ds:[ecx + 4] 向内存中写入数据:
mov edx, 0x13FFD8
mov dword ptr ds:[edx+0xC], 0x87654321
4. [reg + reg*{1,2,4,8}]
读取内存的值
mov eax, 13FFC4
mov ecx, 2
mov edx, dword ptr ds:[eax + ecx * 4] 向内存中写入数据:
mov eax, 13FFC4
mov ecx, 2
mov dword ptr ds:[eax + ecx*4], 87654321 5. [reg + reg*{1,2,4,8} + 立即数]
读取内存的值
mov eax, 13FFC4
mov ecx, 2
mov edx, dword ptr ds:[EAX + ECX*4 + 4] 向内存中写入数据:
mov eax, 13FFC4
mov ecx, 2
mov dword ptr ds:[eax + ecx*4 + 4], 87654321

 

存储模式

 

查看内存地址

db 内存地址,一个字节

dw 内存地址,看两个字节

dd 内存地址,四个字节看

add eax, ecx

【Assembly】-NO.88.Assembly.2.滴水逆向.1.002-【位运算及基础指令】-的更多相关文章

  1. 【Linux】-NO.87.Assembly.1.滴水逆向.1.001-【介绍】-

    1.0.0 Summary Tittle:[Linux]-NO.87.Assembly.1.滴水逆向.1.001-[基础]- Style:Java Series:Log4j Since:2017-04 ...

  2. 慎用Assembly.LoadFile()和Assembly.LoadFrom()

    经测这俩方法会锁住文件,导致程序运行期间无法对load过的程序集文件进行更名/删除/覆盖等等操作,考虑用Assembly.Load()文件字节组替代: Assembly.Load(File.ReadA ...

  3. 使用InternalsVisibleTo给assembly添加“友元assembly”

    C#的internal关键字可以使标记的方法,字段或者属性等等只能在当前assembly内部使用,那么如果其他的assembly需要使用这个internal的方法的时候怎么办呢?.NET提供了一种类似 ...

  4. 使用InternalsVisibleToAttribute给assembly添加“友元assembly”特性遭遇"强签名"

    一.如何让Intenal成员暴露给另一个程序集 我们知道Modifier为Internal的类型成员仅限于当前程序集能够访问,但是在某些情况下,我们希望将它们暴露给另一个程序集.比较典型的应用场景包括 ...

  5. .NET:Assembly.CodeBase vs. Assembly.Location

    The CodeBase is a URL to the place where the file was found, while the Location is the path from whe ...

  6. 配置到 Framework GAC(Global Assembly Cache) Assembly

    配置到 Framework 通常有两种方法,一种是直接把它放到GAC(Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly)中 :另一种是把它们放到具体 ...

  7. 关于Assembly.LoadFrom和Assembly.LoadFile的区别

    区别: 1.Assembly.LoadFile只载入相应的dll文件,比如Assembly.LoadFile("a.dll"),则载入a.dll,假如a.dll中引用了b.dll的 ...

  8. 滴水逆向初级-C语言(二)

    2.1.C语言的汇编表示 c语言代码 int plus(int x,int y) { return 0; } void main() { __asm { mov eax,eax } //调用函数 pl ...

  9. iOS逆向开发(1):基础工具 | ssh | scp | socat

    小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...

随机推荐

  1. 60cms Cookies欺骗漏洞审计

    源码地址:https://files.cnblogs.com/files/ssooking/60cms.zip 运行60cms目录下的Netbox.exe即可开启Asp Web服务,默认端口80 环境 ...

  2. python定义函数时,形参前加*和**的意义

    转发:https://blog.csdn.net/qq_34806812/article/details/82017839 1.加*表示接受一个tuple类型(元组),如: 2.加**表示接受一个di ...

  3. there was an error running the selected code generator unable to retrieve metadata for

    there was an error running the selected code generator unable to retrieve metadata for PROBLEM: I ha ...

  4. SpringMVC工作原理 : HandlerMapping和HandlerAdapter

    一.HandlerMapping 作用是根据当前请求的找到对应的 Handler,并将 Handler(执行程序)与一堆 HandlerInterceptor(拦截器)封装到 HandlerExecu ...

  5. TIJ -- CountDownLatch

    1. 2. Class : CountDownLatchDemo package lime.thinkingInJava._021._007._001; import java.sql.Time; i ...

  6. python调用shell脚本时需要切换目录

    最近遇到了一个问题,就是python代码调用shell脚本时,发现输入输出的文件,总是和自己预想的有偏差,但是单独在linux下执行命令的时候,却没有错误.后来发现是相对路径的问题,因为执行pytho ...

  7. Python的循环导入问题

    循环导入的最好的解决方法是从架构上优化,即调整模块和模块成员变量的设计.一个好的原则是:可导出的成员变量,都不应该依赖于导入进来的成员变量. 但是在业务开发的过程中,总会遇到通过架构层面解决不了的导入 ...

  8. C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置

    C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置 1.用到的方法介绍 今天,根据领导指示指导移动容器内的控件,生成虚线框,使用 ControlPaint.Dr ...

  9. C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

  10. CF 634A Island Puzzle

    A. Island Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...