-1
首先,對不起,如果我的英語不好,這不是我的自然語言。我在哪裏可以找到memcmp的輸入值(在ARM assembly for reverse engineering中)?
我還沒有逆向工程的經驗。所以,我很困惑我在大學裏關於這個話題的第一個任務。
任務是找到一個二進制密碼。該程序要求用戶輸入,將其轉換並將該輸入與硬編碼值(我不知道它的長度)進行比較。我試圖找到這個價值。
我敢肯定,我發現memcmp命令在哪裏比較值。我知道memcmp得到這些值作爲輸入參數,但我不知道從哪裏(堆棧或明確寄存器...)
下面是一段代碼它得到對memcmp前:
0x10a84 movw r3, #3472 ; 0xd90
0x10a88 movt r3, #2
0x10a8c ldr r1, [r3]
0x10a90 ldr r3, [r11, #-16]
0x10a94 lsl r3, r3, #2
0x10a98 mov r2, r3
0x10a9c ldr r0, [r11, #-20] ; 0xffffffec
0x10aa0 bl 0x10540 <[email protected]>
0x10aa4 mov r3, r0
0x10aa8 cmp r3, #0
0x10aac bne 0x10ac0
我非常感謝任何幫助。
您應該查閱相關的調用約定。據推測,這些參數在這裏以'r0','r1'和'r2'傳遞,其中前兩個是指針,而'r2'是長度。 – Jester
這是不太可能的,但是可能會有一些瘋狂的調用會議或非標準的'memcmp'簽名 - 單單這裏提供的信息不足以嚴格排除。也就是說,'memcmp' _usually_需要3個參數,並且在這裏加載了3個東西(你可以用你的指令集引用方便,不是嗎) - 兩個相對於某個寄存器的偏移量很小(你聞到堆棧幀?),而第三個來自硬編碼(即鏈接時固定)地址。嗯...;) – Notlikethat
http://reverseengineering.stackexchange.com/ –