Trik Rahasia Mendapatkan Pokemon Legendaris di Pokemon Go

anzhuo66.com

Trik Rahasia Mendapatkan Pokemon Legendaris di Pokemon Go – Pokemon Go merupakan game seru yang akan membuat kita berpetualang mencari bermacam jenis pokemon yang terdapat di dunia nyata. Biasanya pemain game pokemon go ini akan diajak berpetualang ke penjuru dunia untuk menemukan pokemon sebanyak-banyaknya. 
Nah diantara pokemon-pokemon itu sendiri terdapat jenis pokemon yang sangat dicari-cari oleh pemmburu pokemon, namun jumlah pokemon jenis ini sangat jarang ditemukan atau bisa dibilang langka. Yuppz pokemon jenis ini disebut Pokemon Legendaris. Pokemon ini akan sangat sulit ditemukan di tempat-tempat biasa atau umum, dan juga untuk menangkapnya pun juga terbilang sangat sulit. Ada media menjelaskan pernah ada pokemon legendaris ditemukan disebuah tempat di keramaian dikarenakan dikejar oleh banyak pemain game Pokemon Go ini. 
Nah berhubung Anda sedang mencari cara mudah dan cepat untuk menangkap dan mengoleksi pokemon langka atau lengendaris, berikut akan kami bagikan cara mudah dan unik untuk mendapatkan pokemon legendaris. 

 Trik Rahasia Mendapatkan Pokemon Legendaris di Pokemon Go 

Memperoleh Pokemon favorit terbukti belum cukup, untuk menjadi yang paling baik serta terkuat yang ada di pelatihan Pokemon, seseorang wajib mempunyai Pokemon legendaris. Pokemon GO baru-baru ini meluncurkan berbagai tipe Pokemon tergolong Pokemon Legendary (legendaris) itu sendiri. Pertanyaannya: bagaimana, di mana serta kapan kami bisa memperoleh legendaries dari generasi pertama dari Pokemon? Untuk bisa memainkan game Pokemon Go, ada baiknya anda membaca Spesifikasi Device yang diperlukan supaya bisa bermain Pokemon Go. Berdasarkan trailer pertama dari Pokemon GO, rute Pokemon kuat mungkin diperoleh melewati kegiatan (event) yang bisa di ikuti oleh siapa pun. Apabila faktor ini terjadi, yang wajib kami perbuat kini merupakan menantikan momen (event) itu sendiri.

Apabila Niantic bakal mengikuti pola dari permainan Pokemon lain, kami mungkin mempunyai peluang untuk meringkus Pokemon legendaris pada setiap event-event tertentu. Biasanya event tersebut diselenggarakan pada tanggal-tanggal tertentu, umpama pada hari raya (natal, paska, serta lain sebagainya). Sebelum event dimulain biasanya ada pengumuman terlebih dahulu

Apabila Niantic bakal memilih jalan yang tak sama, mungkin tutorial lain memperoleh Pokemon legendaris yaitu dengan membeli langsung dari “shop” yang sudah di sediakan. Alias mungkin Pokemon legendaris tersebut masih dibiarkan begitu saja (tidak di munculkan) di sebabkan perbedaan lokasi disetiap negara. Kemungkinan lain merupakan bahwa Niantic bisa melepaskan set pertama legendaries ketika Pokemon Matahari serta Bulan diluncurkan pada 28 November.

Apabila Niantic membiarkan Pokemon legendaris timbul di daerah-daerah tertentu, maka bakal menjadi tak adil bagi mereka yang tak mempunyai jalan masuk ke tempat tersebut dikarenakan perjalanan yang amat jauh ke tempat tersebut.

Ada info menyebutkan bahwa pemain tak bakal memperoleh Pokemon legendaris dengan tutorial mencari di daerah-daerah tertentu. Ada kemungkinan pemain bakal diperbolehkan untuk memilih Pokemon legendaris dari tiga burung legendaris yang mereka inginkan, alias pemain hanya bakal diberbagi salah satu Pokemon legendaris tergantung pada tim mereka. Merah (Red) untuk Moltres, Biru (Blue) untuk Articuno serta Kuning (Yellow) untuk Zapdos. Ada kemungkinan juga, Pokemon legendaris bakal diberbagi terhadap top pemain (rank tinggi) dalam periode tertentu. Tidak hanya itu, pada pokemon tipe biasa (bukan pokemon legendaris), Lokasi-lokasi untuk memperoleh Pokemon Go tak sama-beda, tergantung bagaimana tipe pokemon tersebut.

Semoga saja Niantic tak meletakkan Pokemon legendaris pada “shop” jadi kami tak butuh mengeluarkan uang ekstra untuk memperolehnya. Untuk Memperoleh pokemon Legendaris di Pokemon Go Sebaiknya Niantic hanya memberbagi suatu  tantangan bagaimana tutorial memperoleh Pokemon legendaris tersebut. Jadi game ini terus menantang serta adil bagi seluruh kalangan yang memainkannya.

Demikianlah berbagai penjelasan tentang tutorial memperoleh pokemon legendaris di Pokemon Go. Semoga berguna. Ikuti terus pakar tutorial supaya anda bisa memperoleh informasi-informasi baru tentang Pokemon Go.

Cara Mudah Menginstal 2 Instagram di 1 Ponsel Android

anzhuo66.com

Cara Mudah Menjalankan 2 Akun Instagram di 1 Ponsel Android – Instagram merupakan akses sosial media yang saat ini sedang populer di kalangan masyarakat. Yang awalnya hanya sebuah media penyimpanan gambar dan video, setelah beberapa pengembangan yang telah dilakukan Instagram atau sering disingkat IG inipun menjadi sebuah media sosial yang menarik bagi kalangan pecintadokumentasi foto dan video.

Namun dengan kemudahan dan kenyamanan aplikasi Instagram ini, banyak orang pelaku atau pemakai Instagram yang ingin memiliki akun lebih dari satu, dengan berbagai alasan yang dapat diterima, salah satunya ialah untuk berwirausaha atau berbisnis, sekaligus untuk memperkenalkan kepada banyak orang produk yang kita miliki, dan masih banyak lagi alasan user IG ini untuk memiliki lebih dari satu akun. Dengan kemajuan tehnologi serta pengembangan fitur yang dilakukan oleh pihak perusahaan Instagram, akhirnya ditemukanlah cara atau trik agar kita dapat memiliki akun Instagram lebih dari satu. Yakni berkat orang-orang pintar yang dapat mengoprek aplikasi Android yang memang dasarnya aplikasi tersebut Freeware, layaknya mainan anak kecil yang dapat kita jadikan apapun yang kita mau. 

Cara Mudah Menginstal 2 Instagram di 1 Ponsel Android

Dan disini saya akan berbagi cara tersebut, agar Anda pembaca blog saya dapat mendownload dan menginstall 2 aplikasi Instagram dalam 1 HP Android. Jadi aplikasi apakah itu ?? yakni aplikasi temuan baru yang diberi nama Instwogram yang memiliki fitur dapat login lebih dari satu akun. Tampilan aplikasi ini tidak jauh berbeda dengan Instagram aslinnya hanya saja ada perbedaan pada ikon aplikasi tersebut. Jadi jika anda menginstal aplikasi ini, anda dapat anda dapat mempunyai dua akun Instagram sekaligus namun hanya menggunakan satu ponsel Android saja. Jika anda pemasaran dengan si pembuat aplikasi keren ini, anda dapat mengunjungi forum XDA Developer pada link berikut http://forum.xda-developers.com/showthread.php?t=2683570
Tentunya setiap aplikasi memiliki fitur – fitur canggih tersendiri, begitu pula dengan aplikasi Instwogram ini. Dia memiliki banyak fitur seperti yang saya cantumkan dibawah ini.

Fitur Instwogram:
  • Dapat Post/Upload Gambar
  • Dapat Post/Upload Video
  • Follow-Unfollow
  • Menentukan Lokasi
  • Membuat akun baru
  • Klik link

Untuk anda yang sudah terlanjut penasaran dengan aplikasi ini, anda dapat mendownloadnnya secara gratis di link berikut ini.

Download Instwogram 7.6.0 Gratis:
Download via Mediafire (developer upload)

Dan bagi anda yang ingin menDonasikan uang untuk aplikasi ini sebagai wujud trimakasih, anda dapat mendonasikannya melalu link berikut di forum XDA Developers http://forum.xda-developers.com/showthread.php?t=2683570

Keeping it real: Improving reviews and ratings in Google Play

anzhuo66.com

Posted by Andrew Ahn, Product Manager and Buddhika Kottahachchi, Product
Manager

The Play Store contains the largest catalog of apps in the world. As our users
make decisions about the apps they’d like to install, we want to ensure Play
provides a trustworthy experience.

Recently, we announced
our improvements in fighting fraudulent and spam app installs. In continuing our
efforts to combat spammy behavior, we’ve also improved the ways we identify and
remove fake reviews and ratings. With this enhanced capability we are now able
to identify and remove more fake reviews and ratings with greater accuracy.

In the vast majority of cases, no action is needed. If you are working with
someone else to promote your app (e.g., third-party marketing agencies), we
advise you to check-in and ensure that their promotion techniques use legitimate
practices, and adhere to the Google
Play Developer Policy. The basic rule of thumb for reviews and ratings is
that they should come from genuine users, and developers should not attempt to
manipulate them in any form (e.g., fake, paid, incentivized).

We will continue making such enhancements to our systems that will further help
protect the integrity of Google Play, our developer community, and ultimately
our end users.

Cara Menangkap dan Mendapatkan Banyak Pokemon di Game Pokemon Go

anzhuo66.com

Cara Menangkap dan Mendapatkan Banyak Pokemon di Game Pokemon Go – Permainan yang termasuk baru ini memang sedang booming di seluruh dunia, bahkan berita yang menghebohkan seperti the conjuring 2 pun terlupakan oleh netizen oleh permainan ini, Apa sih permainan ini ?? Yupzz benar sekali, Pokemon Go jawabannya. Permainan yang satu ini memang sangat mengasyikan dan menyenangkan, selain permainan ini berbeda dengan yang lain, kita juga bisa langsung berinteraksi dengan trainer lain secara real live.
Karena memang bila kita ingin melakukan battle atau trade harus berdekatan dan berada di satu gym untuk sekedar melatih pokemon ataupun battle perebutan kekuasaan. Tidak dapat dipungkiri, meski game Pokemon Go ini terbilang masih baru dirilis di Amerika, game ini langsung booming dan begitu banyak orang yang memainkan. Bahkan orang Indonesia seperti kita pun tidak sedikit yang mulai memainkan game Pokemon Go ini meskipun servernya masih belum tersedia di Asia. Dan itupun link download di Playstore juga belum tersedia, sungguh keren bukan game satu ini. ( Baca : Download dan Cara Install Game Pokemon Go di Semua Type Android )



Yupppzzzz, sebenarnya untuk bermain game Pokemon Go ini tidak memerlukan skill yang tinggi, bahkan pemula pun akan langsung bisa memainkannya. Nah supaya kamu menjadi kuat dan tak terkalahkan, peran pokemon sangat penting sekali, karena yang bertarung adalah Pokemon yang kita tangkap dan dilatih. Intinya adalah kita musti berburu pokemon sebanyak-banyaknya dan melatihnya agar menjadi kuat dan bisa berevolusi. 
Suatu ketika saya mencoba berburu pokemon dengan berkeliling di kota saya. Sungguh sangat kasihan sekali, hanya 5 pokemon yang saya dapat, itupun pokemon yang sangat umum seperti carterpie, pidgeto, dll. Ini semua bisa diakibatkan saya terlalu cepat dalam berjalan, bisa juga dalam melakukan penangkapan yang sangat lama sehingga menghabiskan Poke Ball sampai-sampai pokemonnya lari. Bisa juga memang pokemonnya dalah pokemon rare yang mempunyai CP yang tinggi sehingga diperlukan trik khusus dalam penangkapannya. Pokemon yang memiliki speed yang tinggi dan skill teleport juga gampang untuk melarikan diri, misalnya saja waktu itu saya hampir menangkap Kadabra, jangankan mau dilempar Poke Ball, belum diapa-apain dia sudah kabur. Mungkin banyak lagi hal-hal yang membuat perburuan kamu sia-sia. Tapi tenang disini akan saya bahas bagaimana cara Menangkap dan Mendapatkan Banyak Pokemon dengan mudah.. Check it….

Cara Menangkap dan Mendapatkan Banyak Pokemon

Sebenarnya sih mudah, tetapi itu untuk pokemon yang common dan memiliki CP yang rendah, bagaimana jika sebaliknya :
Cara Menangkap Pokemon dengan Poke Ball

Sebelum menangkap, tentunya kamu harus mencari pokemon dulu agar supaya muncul di peta. Untuk itu kamu harus melakukan kegiatan berjalan entah itu naik motor, sepeda, mobil dll untuk berburu pokemon. Nah sebagai penanda akan munculnya pokemon tersebut, kamu harus mengetahui indikator tab di pojok kanan bawah yang bertuliskan “Nearby Pokemon” Jika di klik, tab itu berisi pokemon yang terdekat di daerah kamu berpijak, berikut penjelasannya :

nearby pokemon
Nearby Pokemon
  • Tanda 0 Jejak Kaki – Berada sangat dekat dengan anda dan akan muncul sebentar lagi
  • Tanda 1 Jejak Kaki – estimasi berada di jarak sekitar 20 Meter
  • Tanda 2 Jejak Kaki – estimasi berada di jarak sekitar 100 Meter
  • Tanda 3 Jejak Kaki – estimasi berada di jarak lebih dari 100 Meter
Itu hanya estimasi saja, bahwa kemungkinan pokemon yang akan kamu dapatkan di daerah itu. Smartphone akan bergetar jikalau ada pokemon yang akan mucul, jadi persiapkan dengan baik-baik. Untuk menangkapnya, kamu tinggal mengklik pokemon yang muncul itu, dan mulai bersiap-siap menggeser layar di poke ball ke arah pokemon. Namun tidak semudah itu, harus tepat di lingkaran indikator di dada pokemon. Sebelum itu kamu juga harus mengetahui indikator warna lingkaran yang menunjukkan tingkat kesulitan pokemon tersebut ditangkap.
Baca Juga Cara mendapatkan Pikachu di Pokemon Go dengan Mudah
warna lingkaran pokemon
Warna Lingkaran Pokemon (hijau)
  • Warna Lingkaran Hijau – Easy Capture (Pokemon mudah ditangkap)
  • Warna Lingkaran Oranye – Medium Capture (Pokemon agak sulit ditangkap)
  • Warna Lingkaran Merah – Hard Capture (Pokemon sulit ditangkap
Inilah cara melempar Poke Ball yang baik untuk menangkap Pokemon
  • Klik dan Tahan poke ball, lalu kamu akan melihat lingkaran di pokemon semakin mengecil
  • Lalu lempar poke ball dengan menggeser layar keatas dan harus tepat ke pokemonnya (Semakin kecil lingkaran di pokemon semakin besar kemungkinan untuk tertangkapnya pokemon tersebut)
Jika dengan poke ball kamu susah untuk menangkapnya, itu mungkin yang memiliki lingkaran oranye atau merah. Bisa juga yang memiliki CP yang tinggi, karena semakin tinggi CP pokemon semakin susah ditangkap. Nah solusinya kamu harus memakai Greatball, Ultraball atau Masterball. Razz Berries juga dapat digunakan untuk meningkatkan presentase keberhasilan menangkap Pokemon, dengan razz berries, pokemon akan makan dan sewaktu itu pokemon akan mudah ditangkap.
Cara Mendapatkan Banyak Pokemon

Jika kamu sudah mengetahui cara menangkapnya, nah sekarang saya kasi tau cara untuk mendapatkan pokemon yang banyak dangan menggunakan item Incense dan Lure Module.

  • Incense disini adalah item yang befungsi untuk menarik perhatian pokemon untuk mendekat ke radar lingkaran karakter kamu. Sehingga kemungkinan pokemon muncul akan sangat besar, dan tentu saja kamu dengan mudah dapat banyak dengan menangkapnya. Incense akan mengikuti kemanapun kamu pergi, Incense ini memiliki durasi selama 30 menit, jadi gunakan sebaik-baiknya untuk mencari pokemon.
    incense
    Mengaktifkan item Incense
  • Lure Module adalah item yang memiliki fungsi yang sama dengan Incense. Cuman ini dalam skala besara dan efektifitas yang tinggi dalam mendapatkan pokemon yang keren. Bedanya dengan incense, kalau Lure module harus dipasang di Poke Stop. Sehingga PokeStop itu akan banyak pokemon yang mendekati. Efek ini juga akan bisa digunakan oleh trainer lain yang melewati PokeStop yang dipasangi lure module tersebut. Jadi sangat cocok digunakan untuk berburu bersama teman. Efek durasinya sama dengan Icense yaitu 30 Menit.
    lure module
    Lure Module di PokeStop
Seperti itulah cara yang saya gunakan untuk menangkap dan mendapatkan banyak pokemon di Pokemon GO. Kalian bisa mencobanya pada saat mau berburu pokemon sendirian ataupun bersama teman. Mungkin itu dulu yang saya bahas sekarang. Terima kasih, semoga bermanfaat.

Revisiting Apple IPC: (1) Distributed Objects

anzhuo66.com

Posted by Ian Beer of Google Project Zero


Earlier this year I gave a talk at the inaugural Jailbreak Security Summit entitled Auditing and Exploiting Apple IPC [ slides | video ]. As part of my research for that talk I wanted to find at least one bug involving each of the available IPC mechanisms on OS X/iOS; many of which remain unexplored and poorly-documented from a security perspective.

In the end I was only able to speak about three distinct bugs (involving XPC, MIG and raw mach messages) as the other bugs I’d found were still unpatched when I gave the talk. Apple have since fixed these remaining issues and in this short series of blog posts I’ll discuss in more depth some of these more obscure IPC mechanisms and exploit some more bugs.

In this first post we’ll look a series of bugs in a suid root executable which uses Distributed Objects

Distributed Objects

Distributed Objects are a very old Cocoa Objective-C RPC technology. The idea behind them is pretty awesome: it allows you to take Objective-C objects in your process and make them available to other processes. Any other process can look up these objects (via launchd) and instantiate a proxy object in their own address space which functions (almost*) exactly like the real object, with the slight exception that all interactions with the proxy object are transparently marshalled back and forth via IPC between the two processes:

*Mike Ash’s excellent blog has a very detailed post outlining why proxy objects are only almost exactly like the real objects they represent: https://mikeash.com/pyblog/friday-qa-2009-02-20-the-good-and-bad-of-distributed-objects.html

In Objective-C we can define and vend a distributed object like this:

#import <objc/Object.h>
#import <Foundation/Foundation.h>

@interface VendMe : NSObject
– (oneway void) foo: (int) value;
@end

@implementation VendMe
– (oneway void) foo: (int) value;
{
NSLog(@”%d”, value);
}
@end

int main (int argc, const char * argv[]) {
VendMe* toVend = [[VendMe alloc] init];
NSConnection *conn = [NSConnection defaultConnection];
[conn setRootObject:toVend];
[conn registerName:@”com.foo.my_test_service”];
[[NSRunLoop currentRunLoop] run];
return 0;
}

Here we’ve defined the class VendMe with one method named foo. We create an NSConnection object, passing it our VendMe instance and then call registerName to make this object available to other processes. Behind the scenes this registers a mach port send-right under that name with launchd allowing other processes to look it up and send mach messages.

Here’s the corresponding client side code:

#import <Cocoa/Cocoa.h>

int main(int argc, char** argv){
id theProxy = [[NSConnection
  rootProxyForConnectionWithRegisteredName:@”com.foo.my_test_service”
host:nil] retain];
[theProxy foo:123];
return 0;
}

The NSConnection method rootProxyForConnectionWithRegisteredName is quite self-explanatory; given the object name to look up via launchd (in this case “com.foo.my_test_service”) it returns a proxy object which we can use to interact with the real object published under that name by the remote process. In this case we then call the foo method on the proxy passing the integer literal 123. This method call will be proxied over to the server process where the foo method will actually execute and log the string “123” to the console.

Controlling objects in weird ways

Natalie Silvanovich’s recent Project Zero blog post on redefining object internals in ActionScript demonstrated the kinds of weird things which can happen when objects behave in unexpected ways. Natalie’s work has focused on the the native code underlying the ECMA-script family of languages which are very dynamic, allowing you to redefine surprisingly low-level object behaviour from scripts. Many of the bugs discussed in Natalie’s blog post stem from native code not taking sufficient precautions when interacting with these user-controlled objects. Typically these bugs manifest as use-after-free’s or time-of-check-time-of-use issues due to native code failing to account for callbacks into user-controlled script which modifies state somehow.

Distributed Objects allow us to do similar things with Objective-C 🙂 Of course, this is almost certainly going to be in the context of a local privilege escalation or sandbox escape rather than remote code execution.

In the DO example earlier we called a method passing a simple integer literal as the argument. It’s easy to imagine how this immutable integer can be serialized and reappear in the target process (for example, we could just send the raw bytes representing the value.) But Objective-C is an object-oriented language and we can pass much more complicated objects as function parameters. For example: what happens if we try to pass an instance of a custom Objective-C class as a parameter to a method of a DO proxy object?

If DO doesn’t know how to serialize a parameter (via NSCoding) then it will create a proxy for the client’s object in the server process. Furthermore, if the protocol itself is weakly typed but the code is written expecting a certain type to always be passed we can begin to circumvent the intended logic of functions. For example, if a method prototype declares a parameter :(id)UsuallyAString and then calls string selectors like stringByAppendingPathComponent we could proxy those methods such that, in this example it wouldn’t actually return the concatenation of the two strings but instead something completely different!

Whether or not this is interesting depends upon how DO are used in reality. Are there cases where oddly behaving proxy objects could lead to bugs? Does code actually take precautions to check whether it’s interacting with real native objects or attacker-controlled proxies?

Let’s take a look at some real-world code which uses DO.

Install.framework

Install.framework is a OS X private framework, used when installing packages. Interestingly it contains a setuid-root executable helper named runner:

-rwsr-sr-x  1 root  wheel   115K Apr 28 13:13 /System/Library/PrivateFrameworks/Install.framework/Resources/runner

This means that when we exec this file as a regular user it will actually run with an effective user id of 0.

IFInstallRunner

After performing a handshake with the runner executable we can get a proxy object for an instance of  the IFInstallRunner class (check out the actual exploits linked at the end to see the details of this handshake.)

Looking through the list of exposed IFInstallRunner methods one of them jumps out right away as being worth a closer look:

[IFInstallRunner makeReceiptDirAt:asRoot:]

This method does exactly what it says; given an arbitrary path it will create the subdirectories ‘Library/Receipts under there; and if you set the asRoot flag it will create these directories as root! We’ll take a closer look at the implementation of that but first it’s important to note that in the main method of the runner executable, right after it started, it executed:

 if (!(seteuid(getuid())) { fail(); }

 if (!(setegid(getgid())) { fail(); }

This is the standard way for a setuid process to temporarily drop privileges, meaning that when we reach the makeReceiptDirAt method the runner process is actually running with an effective-user-id of the user which exec’d it.

In the makeReceiptDirAt method if we pass a non-zero value for the asRoot parameter then the code regains root privileges privileges like this:

  if (asRoot) {
    seteuid(0);
    setegid(0);
  }

At the end of the function there’s a call to restoreUIDs: which drops privs again.

Being able to to create these directories as root is certainly interesting but it’s hard to see a clear path to actually exploiting that to do anything too useful. Let’s look more closely at the implementation of makeReceiptDirAt. Here’s what I think the source for this function might look like:

@implementation IFInstallRunner
– (BOOL) makeReceiptDirAt:(id)pathArg asRoot:(BOOL)asRootArg;
{
NSFileManager* file_manager = [NSFileManager defaultManager];

if (![file_manager fileExistsAtPath: [pathArg stringByAppendingPathComponent:
        @”Library/Receipts”]] ) {
  uid_t real_uid = getuid();
  gid_t real_gid = getgid();

  if (asRoot) {
    seteuid(0);
    setegid(0);
  }

  id pathArgSlashLibrary = [pathArg stringByAppendingPathComponent: @”Library”]
  if (![file_manager fileExistsAtPath: pathArgSlashLibrary]) {
    // create the the “Library” directory and chown it to the right user:
    if (asRoot) {
      if (!(mkdir([pathArgSlashLibrary fileSystemRepresentation], 0x3fd))) {
        goto fail;
      }
      if (!(chown([pathArgSlashLibrary fileSystemRepresentation], 0, 0x50))) {
        unlink([pathArgSlashLibrary fileSystemRepresentation]);
        goto fail;
      }
    } else {
      if (!(mkdir([pathArgSlashLibrary fileSystemRepresentation], 0x1ed))) {
        goto fail;
      }
      if (!(chown[pathArgSlashLibrary fileSystemRepresentation], real_uid, real_gid)) {
        unlink([pathArgSlashLibrary fileSystemRepresentation]);
        goto fail;
      }
    }
  }

  id pathArgSlashLibrarySlashReceipts = [pathArg stringByAppendingPathComponent: @”Receipts”];
  if ([file_manager fileExistsAtPath: pathArgSlashLibrarySlashReceipts]) {
    // create the the “Receipts” directory under that and chown it to the right user:
    if (asRoot) {
      if (!(mkdir([pathArgSlashLibrarySlashReceipts fileSystemRepresentation], 0x3fd))) {
        goto fail;
      }
      if (!(chown([pathArgSlashLibrarySlashReceipts fileSystemRepresentation],
                0, 0x50))) {
        unlink([pathArgSlashLibrarySlashReceipts fileSystemRepresentation]);
        goto fail;
      }
    } else {
      if (!(mkdir([pathArgSlashLibrarySlashReceipts fileSystemRepresentation], 0x1c0))) {
        goto fail;
      }
      if (!(chown[pathArgSlashLibrarySlashReceipts fileSystemRepresentation],
                real_uid, real_gid)) {
        unlink([pathArgSlashLibrarySlashReceipts fileSystemRepresentation]);
        goto fail;
      }
    }
  }
}
[self restoreUIDs];
return 1;

fail:
[self restoreUIDs];
return 0;
}
@end

Although this code is clearly written expecting pathArg to be an NSString (stringByAppendingPathComponent is an NSString method) there’s actually nothing enforcing that pathArg is a real NSString object and not a proxy. This means that we could in fact pass an instance of our own FakeString object to this method:

@interface FakeString : NSObject
– (id) stringByAppendingPathComponent: (NSString*) aString;
@end

@implementation FakeString
– (id) stringByAppendingPathComponent: (NSString*) aString;
{
NSLog(@”got a callback!”);
return @”anything we want!”;
}
@end

If you pass an instance of that object to the IFInstallRunner proxy’s createReceiptDir method you’ll see the suid executable call back into your process when it calls stringByAppendingPathComponent on the pathArg argument, allowing us to completely control the semantics of this fake string. And we don’t need to stop there! Rather than returning a string literal (@”anything we want!” in this example) we could instead keep on returning controlled custom objects from the callbacks allowing us to completely circumvent almost all the intended logic of the function. If you trace through transitive closure of all the objects we can gain control of as a result of controlling pathArg you’ll find that we can reach calls to mkdir, unlink and chown with controlled arguments. This was CVE-2015-5784; check out the exploit attached to the bug report to see the full implementation. This bug was patched by verifying that the pathArg object isn’t a proxy by calling [pathArg isProxy] at the beginning of the function (and no, unfortunately you can’t just proxy the call to isProxy!)

This is certainly much more interesting than just being able to make subdirectories called “Library/Receipts” as root. But can we do more?

Implicit state machines

We can model the privilege level (the effective-user-id or EUID) of the runner process as a very simple state machine:



We’re only interested in whether the EUID is 0 (we’re root) or non-zero (we’re not root.) In the runner code this state machine is enforced by dropping and re-gaining privileges as we saw earlier. Fundamentally, each IFInstallRunner method assumes that at its entrypoint EUID != 0. It will then regain privileges if required, execute the body of the method and drop privileges before returning.

There is a fundamental problem here: EUID’s are process-wide whereas Distributed Objects are inherently parallel, meaning that we can concurrently be interacting with multiple proxy objects in a process. This means that the “at the entrypoint EUID != 0” invariant which each IFInstallRunner method relies on must be explicitly enforced by locks, as it will no longer implicitly hold when there are multiple proxy connections. However, looking at the code there are no locks enforcing this.

Again, whether or not that’s interesting depends upon two things:
  • Are there DO methods which might do useful things if the EUID != 0 invariant doesn’t hold?
  • Is it possible to win the race condition? (Are DO proxies each separate threads or just runloop sources? Can we actually exercise enough control to get a race condition and win it?)

Looking through the list of IFInstallRunner methods yields an easy answer to the first question: the runTaskSecurely  method allow us to specify a path to an executable and then get the runner to exec it. Note that unlike makeReceiptDirAt this method doesn’t have an “asRoot” parameter. Under normal circumstances it will be executed with EUID of the regular user.

For the second question, looking at the list of threads in the runner process with lldb’s thread list command it seems like individual vended distributed objects don’t get their own threads of control, but with some experimentation it turns out that if we can get a proxy callback from the runner into our code the runner will wait until we reply before continuing. And whilst it’s waiting we can indeed successfully call methods on any other proxy objects we have and they will execute in the target!

Putting it all together

The final exploit looks something like this:

This bug was CVE-2015-5754; you can check out a working exploit (for OS X <= 10.10.3) in the original bug report. Along with the [pathArg isProxy] patch the fix for this issue involved adding NSLocks to make the implicit state machine explicit and enforceable.

Cara Mudah Mengatasi GPS Error/Not Found – Pokemon Go ( Update 1 Agsutus 2016 )

anzhuo66.com

Cara Mudah Mengatasi GPS Error/Not Found – Pokemon Go ( Update 1 Agsutus 2016 ) – Pokemon Go merupakan game yang sangat fenomenal, baru saja dirilis namun game yang satu ini sudah di download oleh banyak orang, bahkan di Indonesia pun juga tidak sedikit yang ikut serta memainkan game yang mengasikan ini. Namun, dikarenakan game Pokemon Go ini masih versi beta atau dalam tahap pengembangan, banyak sekali masalah yang seringkali terjadi ketika pengguna memainkan game ini. Seperti yang sering terjadi di lapangan, yaitu GPS Not Found, padahal untuk memainkan harus bisa mendeteksi lokasi yang berada di sekitar kita. 
CATATAN PENTING: Niantic menyatakan akan terus meningkatkan performa dari akurasi dan stabilitas GPS dikarenakan masih banyaknya masalah yang terjadi berkaitan dengan hal ini. Lihat pernyataan resmi Niantic disini.

Cara Mudah Mengatasi GPS Error/Not Found – Pokemon Go ( Update 1 Agsutus 2016 )

Cara Pertama Mengatasi Pokemon Go GPS Not Found

1. Matikan GPS, set GPS ke mode High Accuracy lalu buka aplikasi Pokemon Go

2. Nah kalau masih saja bermasalah, masuk ke Settings – Developer Options kemudian cari Alow Mock Location, jika dalam keadaan menyala, matikan dulu. Jika Anda menemukan Allow Mock Location dalam keadaan mati, maka nyalakan kemudian matikan. Baru buka aplikasi Pokemon Go

3. Jika Anda tidak dapat menemukan Developer Options, cari About Device di Settings lalu klik Build Number dengan berkali kali hingga ada notification yang menjelaskan kalau Developer Options telah aktif


Cara yang kedua untuk mengatasi Pokemon Go – GPS Not Found/Error

1. Masuk ke Pengaturan- Appication Manager lalu cari aplikasi Pokemon Go
2. Klik Clear Data lalu klik Force Stop

3. Buka Aplikasi Pokemon Go
4. Jika GPS masih tidak berfungsi, coba restart smartphone lalu reinstall Pokemon Go

Cara Ketiga Mengatasi GPS Not Found di Pokemon Go 

1. Masuk ke Settings – Aplication Manager
2. Scroll ke bawal hingga ketemu game Pokemon Go
3. Masuk ke bagian permission lalu aktifkan bagian location


Cara Lainnya

1. Mainkan Pokemon GO menggunakan sinyal Wi-Fi.
2. Update Google Map. Matikan Developer Options di bagian Setting, buka Google Map (jangan di close) lalu buka Pokemon GO.
3. Reboot/restart device.
4. Matikan Power Saving Mode.
5. Enable Airplane Mode sebentar lalu matikan.

Masukan dari User lainnya

jobejooo says: pake zenfon 5 GPS not found terus, update google map versi 9.32.1 jg g ngaruh, coba downgrade google map ke versi pabrik malah bisa:)AR g fungsi ternyata zenfone 5 g ada gyroscopenya
aas says: Gw pakai xiaomi redmi note 3. Game nya download lewat google. Habis instal game, gps not found. Cuma kelihatan jalan aja. Ngikutin saran dr temen, akhirnya gw download game ingress lewat playstore, mainin game nya sekitar 10 menit. Habis itu buka http://www.ingress.com/intel. Login lalu serch di map nya. Kelihatan portal2 nya. Nah portal yg ada dalam game ingress sama dengan pokestop dalam pokemon go. Setelah itu tutup ingressnya, buka pokemon go. Nah yg tadinya kelihatan jalan aja, sekarang pokestop mulai kelihatan bertebaran di sekitar rumah saya. Padahal saya tinggal di RIAU, daerahnya jg terpencil.
Demikian tips dari kami mengenai Cara Mudah Mengatasi GPS Error/Not Found – Pokemon Go ( Update 1 Agsutus 2016 ), silahkan dicoba untuk mengatasi masalah yang ada pada game Pokemon Go, sehingga bisa asik main lagi. sekian terima kasih ^_^

Cara Mudah Menginstall Game Pokemon Go di Android Jelly Bean

anzhuo66.com

Cara Mudah Menginstall Game Pokemon Go di Android Jelly Bean – Permainan yang satu ini memang menjadi trending topik di media, tidak hanya di Indonesia bahkan di tempat dirilisnya yakni Amerika Serikat pun juga dihebohkan dengan munculnya game Pokemon Go ini. Game Pokemon Go ini memberikan kita pengalaman bermain game yang unik dan seru, kita akan diajak untuk mencari dan menangkap pokemon yang terdapat di seluruh dunia untuk memenuhi pokedex kita. Selain seru dengan latar permainan dunia nyata, kita juga dapat sekaligus berlibur dan menemukan hal baru disaat mencari dan menangkap pokemon, dalam prakteknya sendiri kita dapat menemukan pokemon-pokemon ini di tempat-tempat yang unik dan menarik, seperti taman, tempat wisata, dan tempat lain yang menarik untuk dikunjungi.
Memang ada sebagian orang yang berpendapat bahwa permainan ini kurang begitu bermanfaat dan mendatangkan berbagai konflik di masyarakat. Pasalnya, ada sebuah kasus orang yang mencari pokemon hingga mengakibatkan kecelakaan di jalan, dikarenakan terlalu fokus mengejar pokemon tanpa memerhatikan rute yang dia lewati. Dengan adanya kejadian seperti itu bisa menjadi pelajaran bagi kita, bahwasannya bermain game boleh-boleh saja namun harus melihat situasi dan kondisi. 
Nah kembali lagi bahasan kita kali ini ialah mengenai Cara Mudah Menginstall dan Memainkan Game Pokemon Go di Android Jelly Bean. Informasi yang terdapat di sebagian situs menyebutkan bahwa smartphone yang dapat memainkan game ini ialah dengan spesifikasi versi Android Kitkat ke atas. Lalu bagaimana bagi yang memiliki versi Android lebih rendah dari Android Kitkat ?? seperti misalnya Android Jelly Bean. 
Nah kawan-kawan jangan khawatir, kali ini akan kami bagikan tips dan trik agar Anda yang memiliki versi Android dibawah versi kitkat juga dapat menikmati keseruan permainan game Pokemon Go ini. Oke langsung saja tanpa basa-basi berikut Trik Mudah Memainkan Game Pokemon Go di Android Jelly Bean. Silahkan disimak

Trik Cepat Memainkan Game Pokemon Go di Android Jelly Bean


Cara Memainkan Pokemon Go di Android Jelly Bean :
  • Download terlebih dahulu Pokemon Go khusus android Jelly Bean atau 4.0+ via Google Drive. UPDATE!!! Pokemon Go Jelly Bean versi 0.29.3 download via Google Drive
  • Instal seperti biasa, proses instalnya memang membutuhkan waktu yang lama.
  • Buka aplikasi Pokemon Go 0.29.3 versi android Jelly Bean.
  • Tekan kotak putih di sebelah kiri jika muncul gambar android bertuliskan M*d by i*ack bla bla.
  • Tunggu beberapa saat. Jika sudah muncul halaman awal Pokemon Go, pilih POKEMON TRAINER CLUB…..Ingat jangan menggunakan akun google karena akan force close.
  • Pilih POKEMON TRAINER CLUB.
  • Masukan username dan password kemudian pilih Sign in.



 Note :Jika kalian belum memiliki akun POKEMON TRAINER CLUB silahkan daftar akun trainer club langsung di web resmi Pokemon Go disini. Namun untuk sekarang ini untuk melakukan pembuatan akun ” Trainer Club ” server sedang maintenance jadi kalian harus bersabar sampai proses maintenance selesai. Namun jika kalian bersikukuh ingin membuat akun Trainer Club, admin sarankan gunakan VPN untuk membuat akun Trainer Club.


Cara Membuat akun Trainer Club Pokemon Go Jelly Bean :
  • Download aplikasi VPN Zenmate di Google Play Store di bawah ini :
  • Get it on Google Play

  • Buka aplikasi Zenmate, pilih ” Get 7 days Permium for free “
  • Masukan Email dan password kemudian pilih send verification ( Proses ini hanya untuk melakukan verifikasi jadi kalian tidak perlu kwatir, ini bukan spam!! ).
  • Tunggu beberapa saat kemudian, buka email yang kalian masukan tadi.
  • Kemudian klik ” Confirm your account “
  • Jika sudah buka aplikasi Zenmate, kemudian login dengan akun tadi.
  • Pilih negara ” United States “, kalau ada notifikasi cek list kemudian oke.
  • Kemudian daftar akun trainer club disini.
  • Masukan tanggal lahir kalian dan pilih negara indonesia lalu pilih continue.
  • Isi kolom username, password, email, confirm email, screen name dengan benar.
  • Cek list I accept bla bla lalu pilih continue.
  • Buka email yang tadi kalian daftarkan akun trainer club.
  • Kemudian pilih verify your email.
  • Selesai, kalian sudah berhasil membuat akun trainer club pokemon go.


Masih Bingung Dengan Cara Membuat Akun Trainer Club Di atas? Tenang berikut Video Tutorial Cara Membuat Akun Trainer Club :



Berikut Video Tutorial Cara Pasang Pokemon Go di Android Jelly Bean :



Cara Mudah Mengatasi Game Pokemon Go Keluar Sendiri (Force Closed)

anzhuo66.com

Cara Mudah Mengatasi Game Pokemon Go Keluar Sendiri (Force Closed) – Pokemon go memang game yang fenomenal, baru beberapa waktu dirilis penggunanya sudah hampir di seluruh dunia. Namun, banyak pengguna yang merasa game ini masih kurang maksimal dalam permainannya dikarenakan seringnya masalah yang dialami oleh para pemain Pokemon Go. Salah satunya yakni error force close, yaitu ketika kita memainkan game Pokemon Go secara tiba-tiba game tersebut keluar dengan sendirinya tanpa ada perintah dari kita untuk mengeluarkan game yang kita mainkan.

Nah kali ini saya akan membagikan tips atau trik mudah untuk mengatasi masalah force close pada game Pokemon Go.

Cara Mudah Mengatasi Game Pokemon Go Keluar Sendiri (FOrce Closed)

Setelah Android anda di Root terlebih dahulu Downoad Bahannya :
  • GL Tools download disini 
Setelah bahan di download berikut langkah-langkah untuk mengatasi Force CLose Pokemon Go :
Tutorial Pasang :
Download GLTools di link diatas.Instal seperti aplikasi android biasa sampai selesai ” KALAU ADA PERMINTAAN SUPER SU IJINKAN SAJA” .Setelah itu jalankan / buka aplikasi GLTools tadi yang sudah ter instal.Nanti akan ada tiga option , silahkan dicek listsemua lalu pilih instal( dalam tahap ini membutuhkan koneksi internet ).Selanjutnya kalau proses instal selesai maka android akan restart.Setelah hidup kembali silahkan pilih game yang akan di setting

 Tutorial Setting Pokemon Go : PILIH GAME POKEMON GO NYA
– Enable costum setting for this app
– Ceklis optimize gl shaders
– Down scale texture 0.5x atau 0.25x semakin kecil grafik game turun juga jika sudah pilih back lalu pergi ke home dan check setting dahulu lihat aplikasi yang sedang berjalan nya kalau ada yg nguras ram dan tidak terpakai paksa berenti saja dulu seperti bbm,line,whatsapp, minimal 90mb atau 100mb kosongin ram nya ,jika sudah restart hp
-Dan terakhir jalankan Game Pokemon Go

Baca Juga :
Mengatasi GPS Not Found di Game Pokemon Go
Cara Mendapatkan Pokemon Legendaris di Pokemon Go

Demikian Tips kali ini mengenai Cara Mudah Mengatasi Game Pokemon Go Keluar Sendiri (Force Closed) , semoga bermanfaat ^_^ .

Cara Mudah Mengatasi Ponsel Android Bootloop dengan Mudah

anzhuo66.com

Cara Mudah Mengatasi Ponsel Android Bootloop dengan Mudah – Ponsel pintar atau biasa kita sebut sebagai ponsel Android merupakan tehnologi modern dengan segala kemudahan yang bisa kita peroleh darinya. Salah satunya kita dapat dengan mudah mendapatkan informasi yang ingin kita cari di seluruh dunia dengan hanya duduk santai di rumah. Berbagai ponsel Android yang beredar saat ini sangat bervarian, mulai dari harga dan kualitas biasa hingga kualitas tertinggi. Meski demikian, tidak menutup kemungkinan sebuah alat elektronik seperti Ponsel Android untuk mengalami kerusakan yakni salah satunya masalah bootloop. Bootloop pada android merupakan suatu keaan dimana sistem ponsel Android Anda tidak dapat melakukan proses booting atau start-up seperti komputer sehingga Anda tidak bisa masuk pada menu utama Android dan hanya stuck pada logo samsung atau sesuai dengan merk Ponsel Android Anda. Untuk bootloop pada android sendiri ada 3 yaitu Light Bootloop, Medium Bootloop dan Hard Bootloop.
Cara Mudah Mengatasi Ponsel Android Bootloop dengan Mudah
Masalah bootloop pada ponsel Android sendiri terjadi dikarenakan bermacam-macam hal seperti kegagalan sistem dikarenakan kesalahan pada saat proses rooting Anda atau hal yang lainnya. Entah itu kesalahan merubah font yang tidak cocok, merubah boot animation, merubah file system Ui dan yang lainnya.
Nah jika Anda mengalami hal seperti diatas, ketika Anda ingin menyalakan ponsel Android Anda dan ternyata hanya berhenti pada logo merk ponsel Anda, berarti bisa disimpulkan bahwa ponsel Anda mengalami bootloop. Jika terjadi hal seperti itu jangan mengambil sikap panik terlebih dahulu, disini kami akan berusaha membantu Anda untuk menyelesaikan masalah Bootloop pada ponsel Android Anda

Cara Mudah Mengatasi Ponsel Android Bootloop dengan Mudah

Light Bootloop Android
Permasalahan ini terjadi biasanya karena anda mengutak-atik sistem utama dan tidak menggunakan Recovery Mode, dan akibat dari light bootloop hanya bersifat sementara seperti blank screen.
Cara Mengatasi : Silahkan restart handphone anda terlebih dahulu, jika masih ada keanehan silahkan matikan dan cabut baterainya lalu pasang dan nyalakan lagi.
Medium Bootloop Android
Hal ini sering terjadi karena anda mencoba masuk ke system Recovery Mode dan menginstall script yang tidak jelas asal-usulnya.
Cara Mengatasi : Sebaiknya sebelum mengutak-atik apapun yang ada dalam Recovery Mode sebaiknya lakukan backup agar nanti bisa direstore jika terjadi masalah.
Hard Bootloop Android
Masalah ini adalah yang paling parah, dimana anda tidak akan bisa masuk kedalam menu handphone dan hanya stuck pada logo dan kemudian restart berulang kali.
Cara Mengatasi : Silahkan lakukan Factory Reset (baca disini), jika anda ragu-ragu silahkan bawa ke service center.
Baca Juga :
Cara Mendapatkan Uang Dollar Dengan Cepat Lewat Aplikasi Whaff
Cara Mengendalikan Ponsel Android dengan Suara Kita
Demikian tips untuk kali ini mengenai Cara Mudah Mengatasi Ponsel Android Bootloop dengan Mudah, semoga bisa membantu bagi teman-teman yang sedang mengalami masalah pada ponsel Android kesayangannya. Sekian dan terima kasih ^_^

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

anzhuo66.com – Sistem operasi pada smartphone Xiaomi MIUI 8 yang dikembangkan oleh Xiaomi yang telah dilengkapi dengan berbagai jenis fitur berguna, yang lebih lengkap dibandingkan dengan sistem operasi Android bawaan Google. Selain memiliki berbagai fitur yang sangat lengkap, beberapa pengguna MIUI juga mengaku MIUI memiliki tampilan UI yang sangat enak dipandangan dan modern. Dan bagi Anda pengguna yang menggunakan MIUI terutama pengguna perangkat Xiaomi, berikut ini terdapat beberapa tips MIUI yang lebih efisien dan dapat mempermudah Anda.

Second Space

Fitur second space yang unik disajikan oleh MIUI 8. Fitur ini memberikanmu kesempatan untuk membuat dua profil dalam satu smartphone sehingga kamu bisa membuat beragam hal rahasia di salah satu profil yang kamu buat layaknya Windows.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8 1

Screenshot Panjang

Selain itu, fitur tersembunyi dari MIUI 8 buatan produsen smartphone China ini adalah screenshot panjang. Tentu saja fitur ini sangat berguna apabila kamu ingin melakukan screenshot di website atau halaman tertentu yang cukup panjang. Kamu hanya perlu menahan tombol volume down dan tombol power, kemudian pilih opsi untuk melakukan itu.

Editing Video

Hal satu ini cukup menarik, sebab MIUI 8 menawarkan akses untuk editing video pada aplikasi Gallery bawaan miliknya. Dengan menggunakan fitur ini, kamu bisa menambahkan filter, subtitle, audio, dan lain sebagainya di sini.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Dual Aplikasi

Mungkin saat ini kamu hanya bisa menggunakan satu aplikasi dalam satu smartphone. Tetapi, dengan hadirnya ponsel Xiaomi yang menjalankan sistem antarmuka terbaru, kamu bisa memiliki akses untuk menginstal dual aplikasi sekaligus dalam satu HP.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Aplikasi Converter

Sebagian smartphone Android pasti memiliki fitur untuk mengonversi sesuatu. Namun, berbeda dengan MIUI 8, aplikasi converter yang ditawarkan merupakan versi dengan kelengkapan yang luar biasa. Kamu bisa mengonversi panjang, area, temperatur, kecepatan, dan massa.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Template pada Background

Dulu, melihat background sebuah smartphone pasti tampak begitu membosankan. Untungnya, sekarang smartphone Xiaomi sudah bisa membuatnya menjadi lebih keren. Ya, fitur tersembunyi lainnya yang harus kamu tahu adalah kamu bisa menyematkan template pada background.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Sembunyikan Note

Ketika kamu membuat suatu catatan penting pada aplikasi Notes, mungkin kamu nggak ingin ada yang bisa melihatnya. Nah, salah satu fitur canggih MIUI 8 adalah kamu bisa menyembunyikan note dengan cara menahan note tersebut, kemudian pilih Hide.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Alarm Ulang Tahun

Satu yang mungkin kamu nggak akan pernah nyangka dalam hidup kamu. Begini, dengan menggunakan MIUI 8 pada smartphone terbaru Xiaomi, kamu bisa memasang lagu “Happy Birthday” pada aplikasi Clock bawaan. Jadi, pada hari ulang tahun kamu, smartphone akan memainkan lagu tersebut.

Quick Ball

Untuk menggunakan fitur ini, smartphone Android pada umumnya memakai aplikasi pihak ketiga. Kalau pada MIUI 8, kamu sudah bisa mengoperasikan Quick Ball secara default. Dengan begini, kamu bisa menggunakan shortcut seperti Home, Menu, Lock, Screenshot, dan Back. Mirip-mirip iPhone-lah.

Fitur Baru Yang Terdapat Pada Xiaomi Miui 8

Jadwal SMS

Fitur terakhir yang menurut Jaka paling mutakhir adalah kamu bisa membuat jadwal SMS. Fitur ini memberikan kamu akses untuk melakukan schedule saat menggunakan aplikasi Messaging. Jadi, kamu nggak akan telat lagi kalau mau menghubungi seseorang. Kamu dapat menjadwalkannya sehari sebelum melakukan pengiriman SMS.

Berikut di atas Fitur Baru Yang Terdapat Pada Xiaomi Miui 8 . Semoga bermanfaat.