大神論壇 逆向脫殼分析基礎學習筆記一 資料寬度和邏輯運算

語言: CN / TW / HK

本文為本人的逆向破解脫殼學習筆記之二,為本人對以往所學的回顧和總結,可能會有謬誤之處,歡迎大家指出。

陸續將不斷有筆記放出,希望能對想要入門的萌新有所幫助,一起進步

更多逆向脫殼資源學習,請訪問  大神論壇

資料寬度

計算機資料

數學上的數字是沒有大小限制的,可以無限大。但在計算機中,由於硬體的制約,資料是有長度限制的,超過資料寬度的資料會被丟棄

同一個資料,表示無符號數和有符號數則其含義不同

  • 無符號數:正數
  • 有符號數:正數、負數

例:

當資料寬度為4時,即資料只能儲存4位2進位制位0000~1111

無符號數:

有符號數:

正數:

負數:

可以發現當資料為1011,把資料看作無符號數時,資料表示為B

把資料看作有符號數時,資料表示為-5

無符號數的表示範圍為0~2^4-1即0~15\ 有符號數的表示範圍為-2^3~2^3-1即-8~7

幾個重要的計量單位

BYTE 位元組 8BIT

WORD 字 16BIT 2位元組

DWORD 雙字 32BIT 4位元組

邏輯運算

或運算(or |)

只要有一個為1則結果為1

與運算(and &)

兩個都是1結果才為1

異或運算(xor ^)

相同為0 不同為1

非運算(not !)

取反 1是0 0是1

CPU如何計算2+3?

X:0010

Y:0011

先異或

R:0001

異或完以後要判斷是否運算結束

將兩個數進行與運算 然後左移一位

0010<<1 ==0100

如果結果全為0,結果則為我們所要的結果

否則,把上面異或得到的值賦值到X

把左移後的結果賦值到Y

X:0001

Y:0100

重複操作

先異或

R:0101

再將兩個數進行與運算 然後左移一位

左移完結果全是0,結果則為我們所要的

最終結果為0101=5

CPU如何計算2-3?

X:0010

Y:1101

先異或

R:1111

將兩個數進行與運算 然後左移一位

0000<<1=0000

如果結果全為0,結果則為我們所要的結果

最終結果為1111 = -1

如何取某個值的第N位的數值

與操作

如我們想要檢視23h這個十六進位制數的第3位則可以進行如下運算:

先將23h轉化為二進位制:0010 0011

最簡單的加密演算法

通過異或加密資料 再次異或後則解密資料

要加密的資料:2021:0010 0000 0010 0001

金鑰:54:0101 0100

高位:0111 0100 = 74

低位:0111 0101 = 75

原本的2021加密成了7475

然後再次進行異或操作進行解密:

高位:0010 0000 = 20

本系列逆向脫殼基礎學習都在下方連結中,歡迎學習交流,一起進步

https://www.dslt.tech/article-128-1.html

版權宣告:本文由 lyl610abc 原創,歡迎分享本文,轉載請保留出處

「其他文章」