前言:

因为这个属于产业的非主要环节 目前到2022 依旧以协议分析为主 在这里安卓逆向的主要工作 围绕着so的加固混淆 算法分析展开 壳在这里并不是主要部分 大厂一般没壳 一般壳用脱壳机 这里作为个人学习记录的一个笔记 内容一般都是摘抄的
这里学习的都是基于 art环境的主动调用脱壳 文章摘取自寒冰和youpk作者的博客

app启动流程

image.png
看看主要的这个新建进程函数

  1. 5379 public static void main(String[] args) {
  2. 5380 Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");
  3. 5381 SamplingProfilerIntegration.start();
  4. 5382
  5. 5383 // CloseGuard defaults to true and can be quite spammy. We
  6. 5384 // disable it here, but selectively enable it later (via
  7. 5385 // StrictMode) on debug builds, but using DropBox, not logs.
  8. 5386 CloseGuard.setEnabled(false);
  9. 5387
  10. 5388 Environment.initForCurrentUser();
  11. 5389
  12. 5390 // Set the reporter for event logging in libcore
  13. 5391 EventLogger.setReporter(new EventLoggingReporter());
  14. 5392
  15. 5393 AndroidKeyStoreProvider.install();
  16. 5394
  17. 5395 // Make sure TrustedCertificateStore looks in the right place for CA certificates
  18. 5396 final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
  19. 5397 TrustedCertificateStore.setDefaultUserDirectory(configDir);
  20. 5398
  21. 5399 Process.setArgV0("<pre-initialized>");
  22. 5400
  23. 5401 Looper.prepareMainLooper();
  24. 5402
  25. 5403 ActivityThread thread = new ActivityThread();
  26. 5404 thread.attach(false);
  27. 5405
  28. 5406 if (sMainThreadHandler == null) {
  29. 5407 sMainThreadHandler = thread.getHandler();
  30. 5408 }
  31. 5409
  32. 5410 if (false) {
  33. 5411 Looper.myLooper().setMessageLogging(new
  34. 5412 LogPrinter(Log.DEBUG, "ActivityThread"));
  35. 5413 }
  36. 5414
  37. 5415 // End of event ActivityThreadMain.
  38. 5416 Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
  39. 5417 Looper.loop();
  40. 5418
  41. 5419 throw new RuntimeException("Main thread loop unexpectedly exited");
  42. 5420 }
  43. 5421}