逆向之進制學習

進制

新博客鏈接

  1. 進制的實質就是查表
  2. 熟悉2進制跟16進制的轉換
  3. 熟悉進製表的製作以及計算進制之間的加減乘除

進制練習1

通過編寫7進制加法表,乘法表,並計算
23456+54356 = ?
5621 - 654 = ?
234 * 65 = ?

首先編寫1-100的7進制數據

0 1 2 3 4 5 6
10 11 12 13 14 15 16
20 21 22 23 24 25 26
30 31 32 33 34 35 36
40 41 42 43 44 45 46
50 51 52 53 54 55 56
60 61 62 63 64 65 66

編寫7進制加法表

1+1=2
1+2=3 2+2=4
1+3=4 2+3=5 3+3=6
1+4=5 2+4=6 3+4=10 4+4=11
1+5=6 2+5=10 3+5=11 4+5=12 5+5=13
1+6=7 2+6=11 3+6=12 4+6=13 5+6=14 6+6=15

編寫7進制乘法表

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=12
1*4=4 2*4=11 3*4=14 4*4=22
1*5=5 2*5=13 3*5=21 4*5=26 5*5=34
1*6=6 2*6=15 3*6=24 4*6=33 5*6=42 6*6=51

計算結果

23456+54356=?23456 + 54356 = ?
計算過程:

  1. 6+6 查表是15,進一位,留5
  2. 5+5 查表是13, 13 + 1,3+1查表爲4,爲14,進一位,留4
  3. 4+3 查表是10, 10 + 1,11,進一位,留1
  4. 3+4 查表是10, 10+1 = 11,進一位,留1
  5. 2+5 查表是10, 10+1 = 11,進一位,留1
    結果爲:111145

5621654=?5621 - 654 = ?
計算過程:

  1. 1不夠減,借一位,爲11,11-4=?,查表可得爲4,
  2. 2-1 = 1,1-5不夠,借一位,11-5=3
  3. 5-6不夠,15-6=6
  4. 4
    結果爲:4634

23465=?234 * 65 = ?
計算過程:

  1. 4*5 = 26,留6 進2
  2. 3*5 = 21, 21+2, 23,留3 進2
  3. 2*5 = 13 13+2=15 留5,進1
  4. 1536
  5. 4*6 = 33, 留3 進3
  6. 3*6 = 24, 24+3,4+3 == 10,留0,進3
  7. 2*6 = 15, 15+3, 5+3=11,進2,留1
  8. 2103
    結果爲:22536

2+3 = 1?可能嘛

可能,當定義如下的10進制時便可,0,2,3,1,5,6,7,8,9,4

16進制與二進制的映射

1 2 3 4 5 6 7 8 9 A B C D E F
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

自行編寫進制加密

定義如下的7進制,7,5,6,1,2,3,0
試着計算上題中的計算題目

先編寫進制對應

4 5 6 1 2 3 0
54 55 56 51 52 53 50
64 65 66 61 62 63 60
14 15 16 11 12 13 10
24 25 26 21 22 23 20
34 35 36 31 32 33 30
04 05 06 01 02 03 00

編寫7進制加法表

5+5=6
5+6=1 6+6=2
5+1=2 6+1=3 1+1=0
5+2=3 6+2=0 1+2=54 2+2=55
5+3=0 6+3=54 1+3=55 2+3=56 3+3=51
5+0=54 6+0=55 1+0=56 2+0=51 3+0=52 0+0=53

編寫7進制乘法表

5*5=5
5*6=6 6*6=2
5*1=1 6*1=0 1*1=56
5*2=2 6*2=55 1*2=53 2*2=66
5*3=3 6*3=51 1*3=65 2*3=60 3*3=12
5*0=0 6*0=53 1*0=62 2*0=11 3*0=26 0*0=35

計算

23456+54356=23456+54356=?
計算過程:

  1. 6+6 = 2 留2
  2. 5+5 = 6 留6
  3. 4+3 = 3 留3
  4. 3+4 = 3 留3
  5. 2+5 = 3 留3
    結果:33362

5621654=5621-654=?
計算過程:

  1. 1-4 = 1
  2. 2-5 = 1
  3. 6-6 = 0
  4. 5
    結果:5011

23465=?234*65=?
計算過程:

  1. 4*5 = 4
  2. 3*5 = 3
  3. 2*5 = 2
  4. 234
  5. 4*6 = 4
  6. 3*6 = 51 留1 進5
  7. 2*6 = 55 55 + 5 , 5+5=6, 55+5=56,留6,進5
  8. 5614
    結果:51434

彙編

push 後,esp改動的一定是按機器字長來的嗎?

不一定,可以push 16位的二進制數,esp-2,不可以弄8進制的數
32位:

  • push dword ptr ds:[0x1234] esp = esp - 4

  • push eax

  • push ax

  • push al X

  • push word ptr ds:[0x1234] esp = esp - 2

  • pop ax esp = esp + 2

  • pop eax

pushad popad

標誌寄存器

  1. 進位標誌CF(carry flag) 最高位產生進位或者借位,
  2. 奇偶標誌位PF(Parity flag) 結果中1的個數,偶數PF=1,奇數PF=0
  3. 輔助進位標誌AF(Auxiliary Carry flag)
  4. 零標誌位ZF(zero flag) 用來反映結果是否是0
  5. 符號標誌位SF(signed flag) 運算結果的符號位
  6. 溢出標誌位OF(overflow flag)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章