2017年9月14日 星期四

[java程式語言] 分析輸出字串的調用

各位對Java程式語言不陌生,資工系的相關同學也應該都寫過,但是至於字串的調用,不知道各位知道嗎?

本篇要講解一個算是深度文。
(其他大神,請略過)

這是原始碼


這是編譯後的class檔案內部


我們把這16進位轉換成字串,方便觀察。

下圖是轉碼後的資訊。

有些字串很明顯,調用了四大基本檔案

Object.java
System.java
PrintStream
String.java

這四大檔案來說,其實以這篇文章的原始碼來說,String.java只是輔助而已,不算在內。

我們來看一下這四大檔案的過程。

因為Object只是讓Demo這個類別名稱可以釋放出檔案。
所以本檔案就不太需要詳細說明。



首先,先看System.java    他調用了PrintStream  out這個


再來,我們可以追查到這行。下圖。


checkIO()函數先出現,setOut0(out)後出現

下圖就是checkIO()的方法method
至於裡面是什麼現在對java的新手還並不是太重要。
知道是逆向觀察調用的東西就好。

再來,private static mative void setOut0那行也就是他的方法。


System.out 探討到這邊先結束,繼續向println前進。
觀察一下另外一個檔案。
下圖很明顯,PrintStream.java   裡面調用了println(String x)
參數


至於String.java
這邊的valueOf只是輔助而已,對於本篇的程式碼,沒有太大影響。


Java的字串調用,就講解到這邊為止。

有興趣,請自己慢慢分析。



有著作權,請勿任意轉載。若要分享,請註明本篇來源。


沒有留言:

張貼留言

Ollydbg 2.01 繁體中文版

Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega:   https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...