(逆向)angr 执行二进制函数
關于angr:
github 搜索angr
首先編譯源碼:
#include<stdio.h>
unsigned int ORHash(char *str , int len){
? ? ?int i = 0 ;
? ? ?unsigned int hash = 1315423911;
? ? ?for (i =0;i<len;++i ,str++){
? ? ? ? hash ^= (hash<<5 + (*str) + hash>>1 ) ;
? ? ?}
? ? ?return hash;
}
unsigned int TestFunc(char *s){
? ? ? ?int hash = 0 ;
? ? ? ?while (*s){
? ? ? ? ?hash += (*s);
? ? ? ? ?s++;
? ? ? ?}
? ? ? ?return hash;
}
int main(){
? ? unsigned int tmp = 0;
? ? tmp = 1315423911 ^328855977 + 3438859488 + ('y') ^((1315423911 ^ 328855977 + 3438859488 + ('y')) >> 2) +((1315423911 ^ 328855977 + 3438859488 + ('y')) << 5) +('y');
? ? printf("%u\n",tmp);
? ? printf("%u\n",'y');
? ? printf("test = %d\n",TestFunc("aass"));
? ? printf("orhash = %u\n" , ORHash("ysg" ,3));
}
得到可執行文件 test
用ida 得到函數ORHash的入口地址 0x40052D
下面使用angr 加載可執行文件test ,運行ORHash函數得到結果
得到結果 947199883?
和原可執行文件輸出一致
總結
以上是生活随笔為你收集整理的(逆向)angr 执行二进制函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中调用是什么意思_在Pyth
- 下一篇: Android与Javascript交互