شخیص امضای دیجیتال برنامه b4a ( مهندسی معکوس )

با سلام خدمت دوستان عزیز

در این آموزش ما میاییم SHA1 امضای برنامه رو میگیریم که برای هر برنامه ای لازم است .

شخیص امضای دیجیتال برنامه به طور معمول، بعد از انجام مهندسی معکوس، امضای برنامه می‌شکند و به راحتی می‌توان این موضوع را تشخیص داد؛ به همین دلیل، لازم است که در سمت سرور، قبل از ارائه محتوا، اطمینان حاصل شود که درخواست از نسخه اصلی برنامه انجام شده است. برای این منظور، ابتدا تابع زیر را به برنامه خود اضافه کنید:


Sub KeyDetection As String
Try
Dim jo As JavaObject
jo.InitializeContext
Dim signatures() As Object = jo.RunMethodJO("getPackageManager", Null).RunMethodJO("getPackageInfo", _
Array (Application.PackageName, 0x00000040)).GetField("signatures")
Dim sig As JavaObject = signatures(0)
Dim md As MessageDigest
Dim hash() As Byte = md.GetMessageDigest(sig.RunMethod("toByteArray", Null), "SHA-1")
Dim bc As ByteConverter
Dim raw As String = bc.HexFromBytes(hash)
Dim sb As StringBuilder
sb.Initialize
For i = 0 To raw.Length - 2 Step 2
sb.Append(raw.CharAt(i)).Append(raw.CharAt(i + 1)).Append(":")
Next
sb.Remove(sb.Length - 1, sb.Length)
Return sb.ToString
Catch
Return "Null"
End Try
End Sub

برای به دست آوردن رشته منحصر به فرد امضای برنامه، لطفا این کد را به بخش Activity_Create اضافه کرده و یک بار برنامه را با امضای خود اجرا کنید:

Log(KeyDetection) 

به منظور افزایش امنیت، باید توجه داشت که رشته‌ای که از کد فوق به دست آورده‌اید را به صورت مستقیم در سورس کد قرار ندهید. به جای آن، این رشته را در سرور قرار داده و با انجام هر درخواست، رشته‌ای که از تابع KeyDetection برمی‌گردد را به صورت رمزنگاری شده به سرور ارسال کنید و سپس آن را با رشته منحصر به فرد کلید خود مقایسه کنید. اگر این دو رشته با یکدیگر برابر بودند، به این معنی است که درخواست از نسخه اصلی برنامه شما آمده است. اما اگر برابر نبودند، نشان می‌دهد که برنامه شما دیکامپایل و مجدداً کامپایل شده است و باید از ارسال محتوا از سمت سرور به سمت کلاینت ممانعت شود.

 

در این سورس از 3 کتابخانه زیر استفاده شده است :


JavaObject

MessageDigest

ByteConverter

متد MessageDigest زیر مجوعه کتابخانه Encryption  می باشد .

دیدگاهتان را بنویسید